1.用一句话说明各个语言间的不同,请补充说明。
C : 微调后的引擎
C++: 能赚大钱
Java: 可从银行拿回我们的钱
Python: 童谣 (甚至老者都能从中发现智慧…)
Ruby :可从风投人那拿到钱
PHP: 用于夫妻店
Perl : 和管道胶带类似
Common Lisp: 可用其做任何事情,但且不知该做什么
Objective -C : 乔布斯粉丝所用
JavaScript : 做网页的,到处都在用
C# :针对那些对 IT 无头绪的人的解决方案(相信 MS 会照顾好你,而不是你自己)
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
本图来自网络,出处未知
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
编程语言都是《权力的游戏》中的谁
JAVA——龙妈(Daenerys Targaryen,丹尼莉丝·坦格利安)
理由:Java是使用程度最为广泛、同时也是目前使用人数最多的编程语言,这一点,跟龙妈目前的处境还不太吻合(毕竟龙妈属于从边境慢慢渗入权利中心君临的)。不过,鉴于龙妈的真命天女身份,同时身边聚集了越来越多的力量,更为重要的一点——用Java写的项目,在你了解到核心部分之前,可能先要阅读很长很长的非核心代码...而任何人在跟龙妈交手之前,先要了解她的N种头衔,真是一次打赢,终身炫功啊!
C语言——泰温(Tywin Lannister,泰温·兰尼斯特)
理由:C语言容易编译,贴近底层,多年占据编程语言排行榜前列,虽然近期份额有一定数量下降...凯岩城领主泰温虽然已经领便当了,但是他是少数几位对君临整体情况、不同家族的人物背景及未来趋势有深入洞察力的老前辈。
C++——色后(Cersei Lannister,瑟曦·兰尼斯特)
理由:C++是功能更为强大的C语言,且直接提供面向对象编程和泛型编程的特性。瑟曦虽然不如老爹泰温那样老谋深算,但是傲娇任性、野心勃勃,处处效仿老爹...第7季,色后的笔墨颇多...
Python——囧诺(Jon Snow,琼恩·雪诺)
理由:如果说Python 3是从Python 2中重生了...另外,在人工智能和机器学习领域,Python炙手可热,作为未来之星的囧诺似乎可以拿Python一比。
C#——小玫瑰(Margaery Tyrell ,玛格丽·提利尔)
理由:借鉴了Java的设计思想,好学,易用,同时兼顾运行效率。小玫瑰聪明机智、处事圆滑,能屈能伸。
JavaScript——小恶魔(Tyrion Lannister,提利昂·兰尼斯特)
理由:黑白两道通吃(前后端都能搞定),三观正,洞察世事,偶尔做点小坏事儿,但总体非常受欢迎。
PHP——三傻(Sansa Stark,珊莎·史塔克,外号三傻为英文谐音,同时表达了中国观众为她智商捉急的情绪)
理由:PHP是最好的语言...三傻是最乖的宝宝....
GO语言——Bran Stark(Brandon Stark,布兰登·史塔克)
理由:两者同出身名门,年轻,潜力无限,兼备特殊技能(并发高性能)...
Swift——二丫(Arya Stark,艾丽娅·史塔克)
理由:机敏好学,稳扎稳打逐步完善自身。Swift代码少性能优,二丫话少行动快...
SQL——小指头(Petyr Baelish,培提尔·贝里席)
理由:SQL是其他关系型数据库的基础,是后台必备技能。而小指头隐藏在幕后,精于计算,事事都跟他有牵扯。
Objective-C——弑君者(Jaime Lannister,詹姆·兰尼斯特)
理由:OC是一种通用、高级、面向对象的编程语言。詹姆作为名门望族之后,气质出众,但他拥有其他角色不具备的凡人之痛,错爱、忠孝难两全...
Ruby——红袍女(Melisandre,梅丽珊卓)
理由:梅姨有红宝石,还有巫术和预言能力.....Ruby虽然入门难度略高,但是一旦搞定,用Ruby on Rails框架很快就可以搭建一个复杂的网站。
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
编程语言中的超级英雄们:
绿巨人——汇编语言
习惯于机器底层摸爬滚打的汇编语言,就像一个独裁者,独揽数据移动转移的大权。这不正如同浩克那异乎常人的力量吗?但是,要想把汇编运用得当,可得承受不菲的代价,样样都得事必躬亲。就像绿巨人,这家伙的脾气跟力量并驾齐大,发起火来可真的不是HelloKitty。一旦出现汇编崩溃错误,计算机的小命又得受打击了。
蝙蝠侠——Python
穿梭于流光溢彩的繁华夜市,黑夜给了蝙蝠侠黑色的眼睛,他为我们带来光明。印象中的蝙蝠侠,优雅大气,精炼刚强。Python强大的库资源,如同蝙蝠战车等武器,与你并肩作战,为你排忧解难。同时,Python也有着谜一般的过去,其真正实力一直深藏功与名,给人的感觉是:“另类的脚本语言,运行于虚拟机解析端,耗费着大量CPU资源。”
小丑王——PHP
扭曲的内心世界,无法理解的破坏行径。再看看PHP代码,看一下就仿佛进了万丈之渊。同时还要一并兼顾视图、逻辑、模式等问题,真的令人抓狂不已。
机械战警——C++
C语言出身平凡,是个兢兢业业的务实者。但当插上面向对象的翅膀后,一切都改变了。不过,C++所创造的一切,都可引用<<C++ Journal>>那经典的“受保护的,抽象的,虚拟的,基类的”话语来概括。如果你能很好地驾驭它,恭喜你,你拥有了令人惊讶的本领。
钢铁侠——Ruby
Ruby是先进的,简单快捷同时又高效高能。但由于其是由日本人松本行弘开发,早期的参考资料是相当匮乏。但是随着不断集合Perl、Smalltalk、Eiffel、Ada以及 Lisp等语言的优势,最终成功把这一切都monkey patching(即给内置对象扩展方法)好了。后来,人们觉得它过于肤浅,同时新一代的程序员都习惯把它与”Ruby on Rails”框架混为一谈了,这不得不说是一个悲剧。因此能否脱离这个Web框架帽子而独立生存,成为大家目前关心的问题。
万磁王——Java
一门古老的语言,诞生于C/C++一般的“侏罗纪”时代,但是给人感觉是啰嗦冗长并且笨重。不过假如你要建造的是一座架构稳固的钢铁桥梁,它不会让你失望的。不过假若是要进行小巧灵便的小制作,使用Java就如同杀鸡之牛刀。本机语言与托管语言之争,一直是C/C++与Java之间竞争的焦点。Java相信,这最终可能会演变成一场不可逆转的激烈冲突。
Xavier教授——Lisp
是代码数据还是数据代码?答案其实就在我们自己心中。对于语言,我们真的需要语法吗?纵观语言的发展史,所有语言都是互相联系的。Lisp简练而又快捷的运算器简直就像一个天才,其靠的是对其它抽象概念的抽象理解而演变而来。其倡导的是一种数据和代码和平共存的模式,处于自然之境,相信共存的品德能够带来和谐。不过悲哀的是,这个想法并不是人人都能认同,甚至敬而远之。
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
编程语言中的汽车
JAVA代表车系:德国大众
Java这门语言现在在业界技术榜排名第一,应用范围相当广泛,在企业级开发比如网站建设,内部OA系统建设,还有Android APP 上的开发都有相当多的应用。
C++/C代表车系:捷豹、林肯
C++/C在非网络时代可以说是开发软件的主流,现在也只有一些偏底层开发的场景,才会用到。
C#/.NET代表车系:众泰
C# (音C Sharp,不要念成C 井),是2000年,微软为了对抗网络时代JAVA语言推出的,语言简洁,集成了JAVA的很多特点,比如内存回收之类的。吸收所长这个特点与我们的众泰汽车很有契合度。
JavaScript代表车系:特斯拉
JavaScript现在在前端与后端应用的越来越多,而且配合HTML5,做出来的产品非常漂亮,炫目。
PHP代表车系:五菱宏光
PHP这门语言,是广大程序员口中最好的语言。其应用在网页开发上面,相当灵活与便捷,要出一个网站类系统,速度也是相当块。应用场景同样相当的广泛。就像我们的五菱宏光一样,小巧,便捷,内部空间也大,载人,载物,都能满足。
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
如果编程语言是种武器
C 语言是 M1 式加兰德步枪,很老但可靠。
C++是双截棍,挥舞起来很强悍,很吸引人,但需要你多年的磨练来掌握,很多人希望改用别的武器。
Perl 语言是燃烧弹,曾经在战场上很有用,但现在很少人使用它。
Java 是 M240 通用弹夹式自动机枪,有时它的弹夹是圆的,但有时候不是,如果不是,当你开火时,会遇到 NullPointerException 问题,枪就会爆炸,你被炸死。
Scala 是 M240 通用机枪的变种,但它的使用手册是用一种看不懂的方言写的,很多人怀疑那只是一些梦话。
JavaScript 是一把宝剑,但没有剑柄。
Go 语言是一种自制的“if err != nil”发令枪,每一次发射后,你都必须要检查它是否真的发射了。
Rust 语言是一种 3D 打印出的枪。将来也许真的能派上用场。
bash 是一个十分碍手的锤子,你抡起它时会发现所有东西看起来都像钉子,尤其是你的指头。
Python 是一种“v2/v3”双管枪,每次只能用一个管子发射,你永远不知道该用哪个管子发射好。
Ruby 是一把外嵌红宝石的宝刀,人们使用它通常是因为看起来很炫。
PHP 是水管子,你通常会把它的一段接到汽车的排气管,另一端插进车窗里,然后你坐进车里,开动引擎。
Mathematica是一种地球低轨道粒子大炮,它也许能够干出很神奇的事情,但只有付得起费用的人才能使用它。
C#是一种强悍的激光大炮,架子一头驴子上,如果从驴子上卸下来,它好像就发不出激光。
Prolog语言是一种人工智能武器,你告诉它要做什么,它会照做不误,但之后,它会弄几个终结者出来,烧掉你的房子。
Lisp语言是一把剃须刀,有很多款式。只有寻求刺激和危险的人才会使用它。
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
Java:犹如宫泽贤治的《不畏风雨》中出现的、性格木讷的女孩子。从小就由于迟钝和大食量等特徵被别人当作笨蛋;从小学入学开始就进入田径部、坚持跑步,在中长跑中经常取得好成绩。给人活泼的印象,是十分努力的女孩子。
C++:苗条的双腿和协调的五官,被许多人称做「IT 界首屈一指的美女」的她,也因为拥有插花、茶道、钢琴、小提琴、柔道、剑道、合气道等等才能而出名。
Python:由 Guido 父亲养大的深闺中的大小姐。她个性随和,最出名的是她听 C++ 宣布「想出去旅行一趟、改变一下形象,200x 年回来喔」、出门旅行后(结果回来的时候已经 2011 年了…)(这应该是在说本规划的 C++0x 最后变成 C++11 了),也放话说「我也稍微出门旅行一下,公元 3000 年再回来喔」后,出门数年未归。
Ruby:由松本爸爸养大的日本女孩子。因为生日在圣诞节,人生最大的烦恼就是生日礼物和圣诞节礼物变成一份了。由于受到的教育是自由奔放式的,所以性格好动、好奇心旺盛。平常是一个率真的好孩子,但偶尔也会看到她喜欢恶作剧的衣面,这让周围的人十分困惑。看到她的身影时经常会想起 IT 界的「Just For Fun !」这句话。
PHP:以强化 Web 世界为目的製作出来的女性机器人。竖著的头髮是用来随时接收主人命令的天线。为了与人类相近的触感,使用了硅树纸塑酯作为其皮肤。内部是类似刀锋伺服器的构造,常常使用多台伺服器进行运作。因此体重比人类更重一点。
C#:在著名的微软公司接受菁英教育、11 岁时就跳级进入大学学习、备受人们关注的少女。也被称为「IT 界最强幼女」。
JavaScript:在争议地区长大的 17 岁女孩子。常常面无表情、谈话时总让人觉得有一定的距离感。
Perl:Perl 于 1987 年 12 月、美国的沃尔夫妇家中但身。父亲的教育虽然严厉,却也给了 Perl 许多自由。父亲在教育过程中经常说的一句话是「方法不只有一个」(There’s more than one way to do it)。
C:支撑著这个世界的女神大人,也被称为「圣母大人」。修行是十分严格的,需要理解「指标的指标」之类的问题,以及要求 100% 地成功解决无论多麽努力地修行都难以克服的「malloc / free」问题。由于这样的背景,真正能跟他进行日常交流的人非常地少。
Visual Basic:姓是 Basic、名是 Visual,也有很多人叫她的绰号 VB。小名是 Ruby(和那个 Ruby 没有关系)。VB 在接受严格教育的同时,也在兴趣方面拓展天性;她在手工製品、装饰品方面有著独特的才能。看著她製作珠子的装饰品的样子,会觉得宛如魔法一般。仅仅是动动手、一瞬间就可以做出一串项鍊。
R:她于 2000 年 2 月 29 日出生。正是残存在人们记忆中 400 年一遇的被诅咒的那一天(应该是指千喜虫问题)。她从小时候起就很擅长数学,小学时代就已经达到能快速解决高中数学问题的曾度。此外,她对几何图形也很感兴趣,经常有人看到她画著各种二维、三维的图形,化好后一个人露出满足愉悦的表情。是一个稍微有点奇怪的孩子。
Shell:创世纪(1970 年 1 月 1 日)起,经过数年后被目击到的妖精。会寄宿在家中,有著类似于棕精灵(Brownie)的生活方式,向他们拜託家务事或者杂务的时候,会回答两次并接受的问受的孩子。
----------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------
把开发语言比作信仰,从宗教的角度来看看各种常见语言的特点。原文来自If programming languages were religions
C是犹太教——很古老而且戒律很多,但大多数人都熟悉并尊重其戒律。问题是很难皈依它,你要么开始就信仰它,要么会认为它简直太疯狂了。而且,一旦事情出了差错,人们就会怪罪于它。
Java是正统基督教——理论上来说它基于C,但它去掉了很多老的戒律,以至于跟原教旨已经大相径庭。另外,它新加了一套严格的教义,追随者们相信这些比原来的教义更为重要。他们认为这是世界上最好的语言,而且会将所有的异端烧死在刑柱上。
PHP是Cafeteria基督教——与Java在Web开发领域进行竞争。它引入了C和Java的一些概念,但只限于它所喜欢的。也许它不像其它语言那样条理清楚,但至少给你了更多自由,看起来还算一个整体。而且不会有下地狱(goto hell)这样的说法。
C++ 是伊斯兰教——来源于C,不仅保持了后者的戒律,还变本加厉加入了一套新的复杂戒律。它是如此地多才多艺,可用于构建任何事物,从弥天大罪到美丽的艺术 品,追随者们相信它才是终极语言,并会被持不同意见的人激怒。更可怕的是,如果你冒犯了它或者是它的创始人,你的生命都会受到威胁。
C#是摩门教——乍看之下,它跟Java一样,不过仔细一看就会发现它被单一组织所控制(很多Java的追随者将其视为恶魔),而且很多概念都不相同。你在暗忖,它也许不错吧,呃。。。希望你不会被Java的追随者们歧视。
Lisp是佛教——没有语法,没有核心教义,也没有让人膜拜的神。就看你的造化了——需要你有足够的悟性。有人说它压根儿就不是一门语言,有的人却认为它是唯一有意义的语言。
Haskell是道教——与其它语言差别太大,以至于很多人怀疑它到底能做什么。其追随者相信它才是通往智慧的正道,只是这些智慧为大多数世俗之人力所不及。
Erlang是印度教——又一种奇怪的语言,看起来没什么用处,但不像大多数其它的现代语言,它建立在“同步之神”的基础上。
Perl是巫毒教——一套神秘的、难以理解的咒语,会让你的灵魂永久地堕落。老板在周五晚上九点吩咐你一项紧急任务,这时就得靠它了。(想起兽族部落的巫毒商店,而且它与萨满教有些类似)
Lua是巫术——一种泛神论的语言,容易与不同文化和地区相融合。它的代码非常自由,其中的一些技术在传统语言的用户看来是不可思议的。它与月亮有紧密的联系。
Ruby是新异教主义——不同语言和理念的混合体,可以被看作是一种语言。其支持者群体成长迅速,尽管很多人面带疑色地看着他们,但基本上他们还是善良的,无意于伤害他人。
Python是人文主义——简单、自由,它只需要你具备常识。很多追随者声称,Python帮助他们卸下了其它语言带来的担子,从而再次找到编程的乐趣。有些人还说它就是一种伪代码。
COBOL是古异教主义——很久以前,它曾经统治着大片地区,现在却差不多死掉了。尽管很多人都在其神的仪式中留下了伤疤,直到今天仍然有人追随着它。
APL是山达基教——尽管有很多人声称要追随它,但你总会怀疑它是一个大大的恶作剧。
LOLCODE是阿里乌斯教——它很神秘,产生于互联网,尽管有人在努力地开发和散布,但没人会对它当真。
Visual Basic是撒旦教——可惜你并不是真的需要将灵魂出卖。。。。
2.在程序员初级阶段,你是否也遇到过A和B的故事,请分享一二。
我分享个不久前在微信群和网友讨论问题时发生的故事。事情是这样的:
网友A:学python用什么版本的Linux好
我:哪个版本都一样呀
网友B:搞事情,你这样说会引起世界大战的。
网友B:python 2和python 3完全不同好不好。……此外省略N //看到这,我心理真想说,兄弟你看清楚人家说什么了吗?
网友C:用Ubuntu吧,用的人多 //终于有人将问题再次领回到正确的轨道上
由此看出有些程序员是容不得别人对自己所使用的编程语言有一丁点的不敬,就像那些电视剧电影里演的那样,别人对自己怎样都行,但对待至亲稍有出言不逊或其他不法行为,就不可原谅一般。大家所熟知的,如果有人在程序员的群中说XX语言是世界上最好的语言必定会引发一场“腥风血雨”,也是最好的写照。