开发语言的选择_开发语言应首选-程序员宅基地

技术标签: 语言  c++  单元测试工具  编程  理想流  测试工具  

在软件这个行业里,怕是没有任何一个其话题域像开发语言这样引起争议了。对开发语言是非的争论,不单旷日持久,且深度亦是与时俱进。

实现要强调下的是,在这里我们要专注的是开发语言的选择而非开发语言的优劣

从不同的视角对开发语言进行选择,其结论可能大相径庭。

从项目的角度看,语言自身特性的多少,强弱往往并不成为一个关键选择因素。好比说某语言支持多重继承,而某语言不支持多重继承,但对大多项目而言多重继承这一语言特性并不成为选择的决定性因素。从项目角度看,某些通常被考虑(或不得不考虑)的因素有:

  •  历史的原因。维护升级类项目这类没有选择的选择自不必提,这里说的历史的原因是指这样一类情形:完成某个项目需要某一图形算法库,而公司中只有这类库的C++静态库。这个时候也许可以再做一层封装,但从省力的角度看,很多人可能更愿意选C++
  • 现实的具体的原因,也就是说非这种语言不可的情形。做C51程序的话,恐怕大多数人都会直接想到用C。或者面对需要指针直接对内存进行操作的情形,很多人也自然的会想到C/C++
  • 既有类库(组件等)的丰富程度。比如Windows下,.net中提供的类库要比非管态的C++中多很多。同等情形下,很多人出于生产率的考虑,恐怕会选C#,而不是非管态的C++
  • 配套工具。IDE的丰富程度,单元测试工具,静态测试工具等等。
  • 其他还有现有人员的技能,目标性能等因素。极端情形下,团队成员水平较差,那同等条件下就要避免复杂的语言。

总而言之,在做项目的时候,开发语言的选择往往并不是由语言自身特性的多寡而确定的。通常也并不需要做语言特性的完整比较,而后再做选择。

其中一个根本原因在于:就通用编程语言而言,大多的最常用的语言特性是即被这种语言支持,也被那种语言支持的,否则的话这种语言也就不能成为一种通用编程语言。


如果单纯从学习的角度看,那需要考虑的因素与上述不同。

在学习阶段,当我们编制某个程序的时候,与程序结果相比,更应该关注的是过程,也就是究竟学到的是什么。

就编程而言,不论编制任何程序,在学习的阶段,其根本目的更应该是加深我们对编程所面临的本质问题的体会。这也就可以推导出学习阶段编程语言选择的一些基本约束:

  •  远离RAD。在这里RAD包括,但不限于可视化编程,应用框架等等。RAD相关联的东西可以帮助我们快速达到结果,但会减少我们对程序本质进行思索的机会。因此和RAD关联过于紧密的语言,不适合作为学习的语言。
  •  选一种支持多范式的,支持大多现代语言特征的编程语言。强调多范式的一个根本原因是很多时候我们要知道我们究竟有多少选择。就一般论而言,偏于一极通常是不对的,所以强调一切皆是对象的语言必然因此导入其他限制。至少我们应该知道世上还有结构化分析和设计方法。强调现代语言特征是因为,我们很难在不支持类的语言中学习面向对象,在不支持模板的语言中学习泛型。
  •  选一门可以贯通软硬件的语言。在今时今日开发网页的时候可能完全不需要对计算机体系结构,对操作系统有所了解。但从发展的角度看,一旦我们需要对某些较大规模的产品整体负责的时候(比如:系统集成等等)了解这些基础知识的必要性就会凸显出来。从结局来看,肯定不可能每个士兵都成为元帅,但在起点上就决定了一个人必须一直当士兵的安排,多少是有点不恰当的。

读完上面的原则,很多人会发现,最终可能还是C++这类非管态的语言更适合于打基础

这确实是我的观点。从学习的角度看,首选语言应该是C++。在很多场合C++自身的宽泛性和复杂性会成为其自身的弱点,但从学习的角度看,这却成为它的强项。C++C语言子集可以帮我读懂类似《深入理解计算机系统》这样的书,C++的抽象数据类型,面向对象特征和泛型特征可以让我们对程序的本质问题有多个视角的考察。甚至这门语言也可以帮助我们认识面向对象这样一种方法的缺陷。


这是完全不功利的观点,一旦结合起来那个有助于赚钱,那就是另一个复杂的话题了,一时半会说不清楚的。

------------------------------------------------------------------------------------------------------------------------------------

理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。



          
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leezy_2000/article/details/7651007

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文