阅读更多

3顶
4踩

编程语言
几周前,做为8th Light公司的实习生,我从CEO那里拿到了我的工作成绩报告。在与CEO的会见期间,我发现了一个对如何做一个程序员的认识上的盲区。起初我以为,想扩展自己的软件职业道路,那就要学很多各种的语言。我现在就要告诉你,事情不是这样的。

我们一共有多少种编程语言?你只需看一下维基百科上的清单,600多种!说实话,就我个人的情况,我不相信我能学会数百种语言。因为有太多的文档需要看,它们之间有太多的差异需要注意。它们很多都是相似的,例如那些面向对象的语言:C++,Java,Ruby,Python等。然而,我们却有一种更高效的方法学习它们,那就是对它们归纳分类。


在美国德锐大学,每个毕业生要接受的一门必修课程教育就是如何有效的学习。我很幸运遇到一位非常好的教授,Sugarman先生,我才有机会学到学习方法。尽管这个方法非常的基础,但它几乎能应用到任何事情上——不论它们的数量看起来是多么不可思议。

面向对象编程语言的基础理论要点:

学习基础理论要点,例如设计模式/范式,这样你就知道了在所有面向对象的编程语言中共同的知识,而不是只提高了一种语言水平。这是学习编程语言最有效的方法。

编程语言的类型有很多种,例如函数式语言,面向对象语言,面向数据语言(更多)。通过把各种语言归纳分类,这600种语言大概可以分成50类。通过学习每种分类的基础理论要点,再学习分类中的不同语言就变得容易多了。这里我给出一个例子。

对于面向对象编程语言,有5个基本原则能帮助你写出整洁优秀的代码。这些原则由Bob Martin总结,叫做SOLID原则。这里有一篇文章用图片形式很好的对这些原则进行了解释说明。这些原则是:

  • 一个对象只承担一种责任,所有服务接口只通过它来执行这种任务。
  • 程序实体,比如类和对象,向扩展行为开放,向修改行为关闭。
  • 子类应该可以用来替代它所继承的类。
  • 一个类对另一个类的依赖应该限制在最小化的接口上。
  • 依赖抽象层(接口),而不是具体类。
通过学习这些原则,你可以在所有面向对象语言里更有效的进行编程。当然,你需要学会一门这种类型的语言来练习这些原则,但这是完全值得的。

各种面向对象语言间的不同之处:

同属于面向对象语言,它们之间存在大量不同之处:

  • 语法:了解各种语言在语法句式上的差异有很多好处,其中之一能帮助优化你的编码。通过让一个方法或类跟它的行为在特征是保持相似,这能让程序更容易懂。
  • 独特性:每种编程语言跟其它种比起来都有自己的独特之处。Java有私有方法和数据自定义上的特点,Ruby在Web应用上有很强的优势。
总之,学习各种语言之间的区别很重要。这种语言可能比那种语言中某些方面更容易使用或更强大。

总结

学习编程语言最有效的方法是学习它们的基础性的模式/范式,这比单独学习每种语言更高效。通过学习这些基础原理,你可以把它们应用到很多其它类似的语言里。学习各种语言之间的差异,这能帮助我们在面对各种情况时选择更合适的语言。

英文原文:What it means to know Programming Languages / 译文:外刊IT评论
  • 大小: 38.8 KB
来自: 外刊IT评论
3
4
评论 共 4 条 请登录后发表评论
4 楼 xlaohe1 2013-03-21 14:16
clxy 写道
全世界有2千多种语言(另个算法是5千多),超过5000万人使用的有不到二十种;
全世界有600种编程语言,使用比例超过1%的只有十几种;

这么看来,人类永远不可能建成巴别塔.....

我觉得,但凡有人推出一门新的语言时,应该先交笔押金。
只有当使用比例超过某个值时才能还给他,否则按排污费论处!

3 楼 geminiyellow 2013-03-21 10:22
要贿选么?

white_crucifix 写道
clxy 写道
全世界有2千多种语言(另个算法是5千多),超过5000万人使用的有不到二十种;
全世界有600种编程语言,使用比例超过1%的只有十几种;

这么看来,人类永远不可能建成巴别塔.....

我觉得,但凡有人推出一门新的语言时,应该先交笔押金。
只有当使用比例超过某个值时才能还给他,否则按排污费论处!


哈哈

2 楼 white_crucifix 2013-03-20 18:15
clxy 写道
全世界有2千多种语言(另个算法是5千多),超过5000万人使用的有不到二十种;
全世界有600种编程语言,使用比例超过1%的只有十几种;

这么看来,人类永远不可能建成巴别塔.....

我觉得,但凡有人推出一门新的语言时,应该先交笔押金。
只有当使用比例超过某个值时才能还给他,否则按排污费论处!


哈哈
1 楼 clxy 2013-03-20 17:23
全世界有2千多种语言(另个算法是5千多),超过5000万人使用的有不到二十种;
全世界有600种编程语言,使用比例超过1%的只有十几种;

这么看来,人类永远不可能建成巴别塔.....

我觉得,但凡有人推出一门新的语言时,应该先交笔押金。
只有当使用比例超过某个值时才能还给他,否则按排污费论处!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • commons-jxpath-1.3.jar.zip

    commons-jxpath-1.3.jar.zip

  • 使用Commons JXPath简化XML/JSON处理

    讲真,JXPath在很多人眼里可能还是个陌生的名字。但别担心,小黑来给咱们科普一下。Apache Commons JXPath是一个开源的Java库,它提供了一种非常直观的方式来查询和操作XML和JSON数据。其实,JXPath的原理有点像XPath,它允许咱们通过路径表达式来定位数据。这样一来,无论数据结构有多复杂,咱们都能轻松地找到需要的信息。用JXPath处理数据的好处是显而易见的。首先,它能大大简化代码。想想看,如果不用写一堆循环和条件判断,直接一行代码就能拿到数据,是不是感觉很爽?

  • Apache Commons JXPath 使用教程

    Apache Commons JXPath 使用教程 commons-jxpathApache Commons JXPath项目地址:https://gitcode.com/gh_mirrors/co/commons-jxpath 项目介绍 Apache Commons JXPath 是一个开源的 Java 库,它提供了一种简单的方式来使用 XPath 表达式来访问和操作各种类型的对象图,包括 ...

  • Apache Commons JXPath 快速入门教程

    Apache Commons JXPath 快速入门教程 commons-jxpathApache Commons JXPath项目地址:https://gitcode.com/gh_mirrors/co/commons-jxpath Apache Commons JXPath 是一个用于在各种对象图上执行XPath表达式的库。它适用于处理JavaBean、Map、Servlet上下文以及DOM...

  • Java对象查询方法:Jxpath(转译)

         在JAVA对象中,如何进行有效的查询呢,这一直是个很值得探讨的问题.大家知道,在XML中,要找元素如何找呢?没错,通过XPATH是个不错的办法,同样道理,新近发现原来在JAVA中,也居然有象XPATH里的东西,这就是著名的apache commons库中包含的jxpath包中所提供的功能,这可以在http://jakarta.apache.org/commons/jxpath/中找到相关...

  • JXPath(1.3)的简单示例

    JXPath提供了使用Xpath语法操纵符合Java类命名规范的 JavaBeans的工具。也支持maps,DOM和其他对象模型。.

  • JXPATH指南

    关键字: xpath 使用JXPath查询Java对象 —使用XPath表达式语言查询复杂的Java对象树 译者:cleverpig 原文作者:Bart van Riel 原文出处:http://www.javaworld.com/javaworld/jw-03-2007/jw-03-jxpath.html         在近期的一个项目中,我需要一种能够遍历Java对象树并从中提取对象属性值的...

  • JXPathContext支持迷糊匹配

    看完例子就会了 [code="java"] public class Person { private String name; private int age; /** * */ public Person() { } public Person(String name) { this.name = name; } ...

  • xpath之数组定位

    翻页是常用的功能,写了个demo希望能够帮助

  • 使用JXPath查询Java对象

    使用JXPath查询Java对象 —使用XPath表达式语言查询复杂的Java对象树 译者:cleverpig 原文作者:Bart van Riel 原文出处:http://www.javaworld.com/javaworld/jw-03-2007/jw-03-jxpath.html          在近期的一个项目中,我需要一种能够遍历Java对象树并从中提取对象属性值的简单方法。我希望...

  • 超轻量压缩传输js2java rpc框架(XtZPStream v1.0)

    特点: 1、JS2Java RPC:能够在javascript的web浏览器环境中指定java类,获取该类实例的属性, 调用该实例的方法 2、支持复杂js对象作为入参:能够传递复杂的JavaScript Object对象作为调用参数, 在java中得到对应的Map对象 3、自动压缩、解压传递的数据:调用过程中传递的数据自动进行压缩传输,后台自动解压, 然后转换为Map给开发人员;因此从一定层面上保护、加密了传输的数据 4、JS回调函数中能够接收java返回的复杂对象:java中可以返回复杂的对象, 比如Map、List,在javascript中对应为Object和Array 5、友好逐行数据输出并回调:java中可以将List逐行输出到浏览器中, 框架每接收到一条数据,能够自动回调给定的javascript方法, 从而实现数据流的逐行输出; 该接口继承与“com.ibatis.sqlmap.client.event.RowHandler” 因此很容易将ibatis的数据流逐行输出给浏览器,从而实现非常友好的数据加载方式 6、支持回调全异步(观察者模式):所有的过程调用都采用异步方式, 可以指定回调函数,用来接收返回的对象,并进行其他处理 7、日志回调:L异步过程可以设置日志回调函数,让你掌控全过程

  • jxpath与内存索引

    NULL 博文链接:https://xylong.iteye.com/blog/1845354

  • 解决Idea中模块依赖报红问题

    解决Idea中模块依赖报红问题 问题如图 在导入依赖后,会发现在该模块下依赖报红,此原因是由于依赖包没有下载完整。 解决方法: 查看项目配置的maven仓库及配置文件是否正确 进入到对应上图的repository目录下,将报红的依赖包删除。注意:此处要根据第一张图找到最里层的依赖包,本案例中即commos-jxpath:commons-jxpath:1.3包报红。在repository目录下找到并将其删除后,重新下载依赖如图: 部分包由于网络原因可能重新下载后仍无法解析,可以多试几次。或者自己手动去下

  • maven常用依赖(无视版本更新)

    1、设置JDK版本: org.apache.maven.plugins maven-compiler-plugin 3.0 1.8 1.8 2、使用配置文件: org.apache.commons commons-configuration2 2.1 commons-beanu

  • 为什么有些xpath绝对路径拿不到数据_无法从xpath找到数据

    I tried to extract the data every minute and write the data into csv file but I coun't do it. Since I am new to this broad data science world.I tried findall with soup library but not showing the data...

  • StringUtils.isNoneEmpty的方法一直报错,Cannot resolve org.apache.commons:commons-lang3:unknown 加载不了Maven包

    建议,在写依赖的时候写清楚包的版本,就可以加载成功了,刚开始一直用这种写法,结果一直报错,Cannot resolve org.apache.commons:commons-lang3:unknown <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> 解决方法:

  • org.json.JSONException: No value for thumbnail_pic

    在JSON解析中会遇到一种错误,很常见的错误          是因为我们解析方法getString(“ ”)是因为JSON里面不存在这个value,我们可以用另外一个方法optString(“”)这个方法如果不存在value会返回“”空字符串,不会报异常.为了安全起见我一般都是用optString方法,不知道性能上有什么区别,知道的朋友麻烦说一下。小弟谢谢在先.

  • xpath 解析xml 不是万能的,有时候xpath是不行的

    @Testpublic void dom4jXpath() throws DocumentException, ParserConfigurationException, SAXException, IOException, TransformerException{// DocumentBuilderFactory builderFactory = DocumentBuilderFactory.

  • 本次项目用到的所有springboot注解记录

    @Entity 表明该类 (UserEntity) 为一个实体类,它默认对应数据库中的表名是user_entity。这里也可以写成 @Entity(name = “xwj_user”)  或者 @Entity @Table(name = “xwj_user”, schema = “test”) 查看@Entity注解,发现其只有一个属性name,表示其所对应的数据库中的表名 @Table @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table注解的常用选项是 name,用于指明数据库的表名

Global site tag (gtag.js) - Google Analytics