最全能的编程语言是……
回复内容:
题主是想挑个头让咱们这帮程序员互相撕,然后他在暗处偷偷笑而已。
真没哪个语言在我印象里是全能的, 比如C虽然是高级"机器语言", 但是很多时候开发一些东西会很不方便啊.
如果真要比全能性的话, C/C++还算是比较全能的了, 但是(二进制)跨平台就不如JVM上的那些语言们, 也不如脚本语言.
C/C++当然可以用作Web服务, Apache就是90%以上的C写成的, 用C++当然更可以,
C++还可以用Qt来创建GUI应用, 可以用NDK做安卓开发,
但是C++开发的周期不是一般的长, 而且包也没Java多, 所以写C++的感觉就是自己造轮子. 在我不知道有stl之前, 连vector都照着.NET/Java里面的List自己实现了一个. 从Java/C#转过来的人想死的心都要有了. 当然这年头牛人都是自己写自己用的舒服的API的, 那么这一点姑且算个优点.
当然你硬要说写操作系统内核之类的, 那我也没办法, 脚本语言比如Python目前连编译到native的编译器实现都还没有呢, 要写kernel我觉得不可能...
所以尽可能地就是利用现有的工具, 把事情做好, 语言不难学, 最夸张的时候一天学了三个, 现在都不屑于罗列自己都学过哪些语言了 真正有用就好.
现在总结一下, 如果你有一个紧急的任务要你学一门新语言, 基本上除了Haskell或是Lisp(Scheme/Common/Clojure) 基本上可以从这样的sequence入手:
0.搞清楚Hello World程序的结构, 只有一行的除外
1.搞清楚脚本语言还是bytecode还是Native, 编译器/解释器/运行环境长啥样 代码里哪些是注释编译器会忽视, 哪些代码是预处理
2.看好是动态类型还是静态类型, 是强类型还是弱类型, 变量如何声明, 命名规范有哪些, 整数和浮点数有没有明显的区分, 比如3/2是等于1还是1.5 整数范围多少, 有没有溢出风险
3.学+ - * / 之类的运算符, 有没有++自增运算符, 能不能用 i += 1, 以及 Math library, && & || | << >> >>> ^ 能不能正常用
4.流程控制 if...else if...else switch for foreach while 等等, 这个我想说下, 现在很多语言不能把for loop写的像C一样, 这一点很不爽
4.看函数的声明, 是否需要返回类型声明, 是否需要声明函数原型, 是否默认引用传值, 是否支持重载之类 是否支持递归, 函数能不能放进一个变量里
5.看基本的数组等数据结构, 数组到底是指针还是对象, 有那些Collection, 如果有内建的数据结构可以说是新手最喜欢的东西了
6.看字符串的表示处理, 字符串是指针还是对象
7.异常处理, 有没有checked exception, 怎么抛异常又怎么抓
8.有没有OOP, 支不支持继承封装多态, class是怎么声明的, 如果是静态类型怎么用泛型/模板
没有OOP的有没有struct, union? 还是全部都有?
9.支不支持显式指针, 是否支持不安全代码, 内存管理(malloc free new delete), 垃圾回收
10. Lambda表达式, 函数指针/引用, 以及闭包函数, 他们是不是仅仅是语法糖? (比如Java 8就大体上是语法糖) function callback这个东西啊, 一颗赛艇!
11. 多线程, Concurrency, Synchronization
12. 文件IO, stdio
还有什么补充?
基本上就这样.
这么长的答案没这么个段子有点不像话...:
我的意思不是说C语言已经不要学了, C语言是编程之根本我们能不学? 我就明确告诉你这一点.
不要想搞个大新闻, 说C语言已经要没用了, 再把K&R批判一番. 你们呐 naive.
难道不是注释语言???
无害性 支持任何编译器
跨平台可移植性 分布式
面向理解
语法随意易理解 可读性高
比任何机器,汇编,高级语言简单易学
不是English吗?
c, 有机器语言的地方,就有c
python,脚本语言中的瑞士军刀
python不行我直播日电灯泡
0101010101010110101010101010101010
很明显是brainfuck。。运算能力等同于图灵机,能实现任意语言的算法
大多数编程语言都是图灵等价的。所以一种语言能干的事情其他语言也能干。