记得曾经有人问过我,学什么语言好,或者说更有“前”途?而在网上也经常看到关于语言优劣的争论,记得曾经还有.Net和Java两大阵营的激烈“骂战”。我向来不喜欢参与任何一种这种我认为没有任何意义的讨论,因为在我看来程序语言没有好坏优劣之分,只有应用的领域的不同。
我自己从学C开始,但是由于工作中不常用到而基本荒废,如今正在恶补中。Java是我工作的主流语言,既然是Web开发,JavaScript、HTML、CSS这些都是不可缺少的。而有时也会用到C++、C、Perl、Python和Ruby。
在这里我只想申明一个观点:在不同的应用领域的选择最合适的语言。
关于不同的语言适合不同领域的例子比比皆是:C可能无论如何也做不了网页,而HTML估计也不能做驱动程序。
也许最关键的问题不是在这个上面,而是集中在同一领域的不同选择上,比如Java和.Net,这个时候就需要多方面综合考虑。但是相互的“攻击和谩骂”是没有必要的。就比如,一个人喜欢吃包子,而你喜欢吃馒头,你难道就非要说包子不好,馒头如何如何好,甚至想把做包子、卖包子和吃包子,都要大打一顿,然后让他们都改吃馒头,才解气。估计没有人会这么做,因为大家都知道你喜欢吃什么那是个人喜好口味的问题,但是最终的目的是一样的,都是为了填饱肚子。当然程序语言的选择上,可能不仅仅是口味上的问题,还要考虑很多其他的因素。
1、目标领域。我想这是首要的条件,当然估计也没有人会在这个上面出乱子,因为一般不会有人选择HTML做嵌入式开发。
2、公司或者部门的一贯技术路线。之所以提到这一点,主要是考虑到经验积累的原因,并不是不鼓励创新。一个软件公司(指国内大部分的中小型公司)一般都会有比较固定的技术路线,比如J2EE、.Net、LAMP等等,在长期的项目开发和实施过程中,都会有大量的问题出现,同样也就有了对这些问题的解决方法。这就宝贵的经验!作为开发人员,很可能都比较讨厌写文档(我也不例外)。可是如果把自己平时开发过程中遇到的问题和解决方法都能记录下来,若干年后,不失为一笔宝贵的财富。你也是否也有过同一个问题Google很多次的经历呢?
3、未来的发展。这个可能考虑的较少,但是也许要考虑到。当我们面对是用Qt还是用C++开发Symbian程序的问题时,我们可能就不得不考虑这个问题了。
4、客户的要求。选择什么样的开发语言,好像一般没有客户什么事情。可是也许有些比较“谨慎”的客户,在投标之前已经找了“咨询公司”评估了各种平台,从而选择了他们认为“最先进”的一个。那么在这个时候,在以尽量满足客户需求为导向的理念的指导下,我们除了尊重客户的意见,其他还有什么办法?(当然也许有个性的仁兄说,我不做了,换家公司。老板可能并不在意这些吧!)
5、应用的规模和开发周期。应用规模对语言的选择也有着很大的影响,比如我想开发一个企业级的应用,我可能会选择J2EE和.Net,可是如果我只想做一个公司甚至部门内部应用,那么ROR就好了。开发周期也是同样的道理,在很紧张的开发周期要求下,我们就没有办法选择重量级的平台。
6、兼容并包,打开思路。这个不算条件,算一个思路吧。如果我们考察Facebook、MySpace、Youtube这些知名网站的架构,就会发现,它们都是包含了几种不同的语言,而每种语言都在自己的强项上发挥作用。好钢用在刀刃上。批判不是一件坏事情,但是在我们批判的时候,更应该看到它的长处,因为也许有一天我们就要用到了它。
知己知彼,百战不殆。所以即使我们不想用这个平台,是不是也要先了解它,在确定技术方案的会议上,至少我们可以说出让别人信服的放弃它的理由!
作为一个技术人员,学习能力是至关重要的软实力,大家应该没有异议。因为,在争论的同时,也许我们更应该考虑在合适的时候,是不是应该在批判的同时更深入了解下我们批判的对象呢?
分享到:
相关推荐
- **开发小程序**:制作小程序不仅可以增加网站的外部链接,还可以带来稳定的流量增长。 - **提升竞争力**:掌握编程技能有助于站长更好地应对搜索引擎算法变化和关键词竞争加剧等问题。 ### 2. 英语单词快速记忆与...
DFS首先从一个起点开始,每次随机选择一个未访问的相邻格子,并标记为已访问。当所有相邻格子都被访问过或无相邻可选时,回溯到上一步并尝试其他方向。最后,通过删除随机选择的一些墙壁以增加复杂性,确保迷宫有多...
GOAT(山羊)是中英文大语言模型,基于LlaMa进行SFT ...模型在推理时能够适时地结束文本生成而不是无休止的生成; - [3] 公开GOAT_7B LoRA模型参数,此模型是基于LlaMa在10k中英文多轮对话数据上有监督微调获得;
标题中的“PB”指的是PowerBuilder,一款经典的面向对象的编程工具,主要用于开发企业级的应用程序。问题提及的“收据无休止打印”是PowerBuilder应用程序在处理打印任务时可能出现的一个常见问题,可能是由于程序...
在IT行业中,编程是解决问题的关键,而C语言作为一门强大的后端开发语言,常常被用于构建复杂的系统。本文将深入探讨C语言编程中至关重要的概念——算法,它是程序设计的灵魂。算法是解决问题的具体步骤和方法,是...
在Java编程语言中,多线程是核心特性之一,它使得程序可以同时执行多个不同的任务,从而提升系统效率。在“JAVA公共资源模块的设计与开发-多线程”这个主题中,我们将深入探讨如何在Java中设计和开发高效的多线程...
追梦人(无歌词,带和弦).piano2 雪中情.piano2 她非常小巧,只有一个可执行文件,不需要安装,功能非常强大,界面简洁、美观大方,完全免费,开放源代码。 『主要功能』 1、用电脑的声卡、键盘、鼠标来模拟...
追梦人(无歌词,带和弦).piano2 雪中情.piano2 她非常小巧,只有一个可执行文件,不需要安装,功能非常强大,界面简洁、美观大方,完全免费,开放源代码。 『主要功能』 1、用电脑的声卡、键盘、鼠标来模拟...
英雄无休止-Solarus Engine的游戏设计测试任务 英雄无休止是对Solarus引擎( )的追求,即使它基于Solarus脚本的《塞尔达传说》,也不是真正的游戏( )。 该任务作为多个试验的枢纽,您可以选择在完成每个试验后将...
- 有穷性:算法必须有确定的结束点,不会无休止地运行。 - 确定性:每一步都有明确的定义,避免模糊不清的解释。 - 可行性:算法中的每一步都应该能在有限的时间内执行完毕。 - 输入:可以有零个或多个输入数据...
3. **有效沟通**:鸡、鸭、猫、马等动物之间的争论,虽然表面上看似无休止,但它们都在试图表达自己的观点。在IT团队中,有效的沟通是解决问题和冲突的基础,每个人都应清晰地表达自己的需求和看法。 4. **倾听与...
- 伪代码是一种简化编程语言,用于描述算法步骤,易于理解,可以转化为实际的编程语言。 5. **算法的实现**: - 赋值语句`x←3×5`表示将3乘以5的结果赋值给变量x。 - 变量的值在执行过程中可能会改变,如`x←x...
《高级语言程序设计C2算法》的讲解涵盖了算法的基础理论和表示方法,是理解计算机程序设计的核心内容。算法,按照尼古拉斯·沃斯的定义,是程序的灵魂,结合数据结构形成可执行的程序。算法描述了解决问题的步骤,而...
这意味着算法必须在有限步骤内终止,不能无休止地运行下去。 6. 对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是(d)堆排序。快速排序、冒泡排序和直接插入排序在最坏情况下都有 n...
此时,权重值累加法可以帮助团队快速收敛到一个相对公正的结果,而不是陷入无休止的争论。如果出现【胶着状态】,即无法达成一致,可以采用投票机制,但投票通常作为最后手段,因为无领导小组讨论的目标是通过讨论和...
接下来锅涛老师就给大家全方位讲解一下,在我们程序开发过程中,怎么去规避。除了学会如何规避,还将引发你去思考,思考这个漏洞它是怎么让黑客发现的,就是大家经常会说的一句话,如果你不知道漏洞是怎么来的,那你...
《争论的故事》是苏教版小学三年级语文下册的一篇课文,主要讲述了两个兄弟因为争论如何吃天鹅而错失良机的故事,旨在教育学生理解做事应把握时机的重要性,避免无休止的争论导致一事无成。这篇教案为教师提供了详细...
无论您是在图书馆的网站上进行研究还是无休止地浏览猫咪,使用浏览器按钮快速搜索课程英雄并找到所需的所有学习帮助。 更聪明地学习,随时随地提供具有课程特定资源的GPA。随着课程英雄,你可以... 学习更聪明 ...
#### 建议24:避免陷入无休止的技术争论 - **解析**:技术争论往往没有绝对的对错,关键是要根据具体情况做出合理选择。专注于解决问题而不是争论技术细节。 #### 建议25-27:持续学习和实践 - **解析**:不断学习...