计算机科学软件,科学网—计算机科学Vs软件工程 - 武昱的博文

计算机科学Vs软件工程

软件工程的一部分工作是学习如何把从计算机科学中学到的知识应用于软件产品的编制。也可以认为,软件工程是学习如何设计、维护和管理软件,如何管理软件的一个发行周期,以及掌握相关的工具链条。所有这些问题对软件产品的编制非常重要,但通常往往不会引起计算机科学家的兴趣。相反,计算机科学中的许多概念与软件工程师的日常工作并不直接相关,比如常数因子为很大数的高级算法。

对计算机科学与软件工程的混淆,通常是由于本科阶段有很多相同的必修课程,部分是因为它们历来就联系紧密,部分是因为学术研究的许多外在的压力使得计算机科学专业为了迎合市场需要而无形中向软件工程偏移。软件工程的研究方向包括:软件结构、软件工程管理、风险管理、软件安全、软件测试等等。计算机科学的研究方向包括:算法、计算理论、编译器、操作系统、人工智能等等。

计算机科学与软件工程的区别,正如它们的名称一样,是科学与工程的区别,即发现知识与应用知识的区别。计算机科学之于软件工程,正如物理学之于机械(电子、核等)工程。计算机科学是数学的一个特殊的分支,它的目标是一个被证实了的理论,而不是一个可以使用的软件。在计算机科学里,也需要编程,但所编写的程序仅是作为一种手段或者一种工具,如同物理学试验中所用的测试设备。无论程序多么复杂,都是为了证明想法是否正确,而不是为了创造经济价值。有时,计算机科学领域的工作人员所写的代码在工程实际中也能发挥作用,但这些代码往往需要进一步升级以适应工程实际的严格要求。

软件工程实质上就上生产有用的并且(或者)有经济价值的产品,软件工程的从业人员必须使用计算机科学的相关知识,正如机械工程师必须使用物理学的相关知识。但是,除此之外,软件工程的从业人员还需要具备相当的工程实践技能,比如,软件测试、软件版本发行、需求管理、用户经验、软件安全,以及一些涉及心理学和人机交互的知识。属于软件工程领域的科研项目,截至目前还是不多见的,它们中的一些其实更多涉及的是计算机科学,而非软件工程。

计算机科学的目的是尽可能的拓展我们对计算的认识,从而理解统治计算领域的自然法则,以及计算领域的边界。而软件工程是一门把知识应用到我们日常的生活当中的学科,通过应用知识来发明技术、改进技术,解决世界难题,从而提高人类的生活质量。

关于计算机科学和软件工程的关系,有一个比喻较为贴切。计算机科学之于软件工程就相当于天文学之于望远镜。天文学远远不止于设计一架望远镜,天文学是研究宇宙中天体的科学,但是为了更好的开展天文学研究,我们往往需要设计一架望远镜。望远镜是因天文研究而生,但望远镜的应用远不止于研究天文,软件工程也一样。

转载本文请联系原作者获取授权,同时请注明本文来自武昱科学网博客。

链接地址:http://blog.sciencenet.cn/blog-901276-986123.html

上一篇:与日俱增的研究兴趣——我的转博申请

下一篇:居里夫人的爱情(一):苦涩的初恋

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
细菌觅食算法(Bacterial foraging optimization algorithm)是一种基于细菌群体行为的优化算法,它最初由美国生物学家E. coli细菌在食物搜索过程中表现出的行为启发而来。该算法通过模拟细菌在寻找食物、分泌基质、移动、感应等行为,来寻找问题的最优解。细菌觅食算法已经成功应用于多个领域,包括图像处理、信号处理、模式识别、机器学习等。 在MATLAB中实现细菌觅食算法,可以参考以下步骤: 1. 定义目标函数:根据需要优化的问题,定义一个目标函数。 2. 设计细菌觅食算法的参数:包括细菌数量、迭代次数、细菌感应范围、化学素浓度等。 3. 初始化:随机生成一组细菌位置。 4. 迭代寻优:在每一次迭代中,计算每个细菌的适应度,根据细菌周围的化学素浓度和感应范围来更新细菌的位置,最终得到最优解。 5. 输出结果:输出最优解及相应的函数值。 以下是一个简单的MATLAB代码示例: ```matlab % 定义目标函数 fun = @(x) x(1)^2 + x(2)^2; % 设计细菌觅食算法的参数 N = 50; % 细菌数量 T = 100; % 迭代次数 c = 0.1; % 化学素消耗速率 d = 0.2; % 拉近距离的比例因子 e = 0.1; % 扰动参数 % 初始化 x = rand(N,2)*10-5; % 随机生成位置 s = zeros(N,1); % 初始化化学素浓度 for i = 1:N s(i) = fun(x(i,:)); end % 迭代寻优 for t = 1:T for i = 1:N % 计算每个细菌的适应度 f = fun(x(i,:)); % 感应范围内的细菌平均化学素浓度 s_ave = sum(s(abs(x(i,1)-x(:,1))<0.5 & abs(x(i,2)-x(:,2))<0.5))/sum(abs(x(i,1)-x(:,1))<0.5 & abs(x(i,2)-x(:,2))<0.5); % 更新细菌位置 x(i,:) = x(i,:) + d*(s_ave-s(i))*sign(randn(1,2)) + e*randn(1,2); x(i,:) = max(min(x(i,:),5),-5); % 位置限制在[-5,5]之间 % 更新化学素浓度 s(i) = (1-c)*s(i) + c*f; end end % 输出结果 [minf,idx] = min(s); xmin = x(idx,:); fprintf('最优解为(%f,%f),函数值为%f\n',xmin(1),xmin(2),minf); ``` 需要注意的是,细菌觅食算法的效果受到参数的影响,需要根据具体问题进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值