这选择显然是因人而异的。。至于怎么选,要看你是初学者,还是老手?。。对性能有要求,还是没要求?
如果是完全没有基础,我建议哪个都不选,如果非要选一个,那就选PYTHON。。如果你是初学者,把网上的教程看个遍,再买上几本书。。。你所学会的也仅仅是语法,而根本不会编程。。。因为这些教程,也仅仅是教你语法,而没有教你编程。。你甚至把网上的教程看个精光,却连个最基本的OA系统都做不出来。。。只能在一个黑乎乎的控制台上,打印一堆破字符。。
-------网上的所有教程都会教你的:
怎么定义一个变量?怎么在控制台打印变量?
怎么写一个循环?怎么在控制台打印一堆变量?
怎么写一个函数?怎么在控制台打印返回值?
怎么创建一个对象?怎么在控制台打印对象属性?
------高级一点的教程,会教你的:
怎么用PYTHON的模块,写一个爬虫?
怎么用RUBY的ROR框架,获取一个表单?
怎么用GO的beego,写一个博客?
-------而这些的教程,从来不教你的:
面向对象有什么用? 委托是什么?**是什么? 工厂模式,单例模式,观察者模式,这些都是啥?套接字是啥?UDP是啥?TCP/IP是啥?二叉树是什么玩意?状态机又是什么玩意?啥叫逆变?啥叫协变?啥叫异步?啥叫反射?
---------------------------------------------------------------------------------------------
如果一套教程,要把这些都讲明白。。。可能需要上千集。。。所以这些教程,都跳过了这些内容。。但如果你不明白这些,就根本学不会编程。。。如果你打算学一门语言,而手上只有几十集教程,外加三五本书。。。那你只能学会玩控制台。。。
所以初学者选择一门语言,首先要保证这门语言作为主要开发语言,常年被公司使用,这样才能真正学会编程。然而这三门语言都不具备这样的特点。它们通常都是被当成第二语言,做一些辅助开发的工作。其中Python只在极少数情况下,才被用来作为主要开发语言。至于Go与Ruby,我目前还没听说过它们有被当作主要开发语言的例子。我所推荐的是从C#和J**A两者之间,二选一。。。学精其中一门之后,再来考虑PYTHON或GO作为第二语言。。。不然无论你选哪个,都几乎不可能靠一门语言找到工作。前四种都是脚本语言,前三种能做的事都差不多,Python适用范围更广。
Lua不了解,Go是完完全全的编译型语言,和前面4个本质上不同。我觉得Go很不错,可以尝试用Go来做原来C/C++做的事!
我是做Java的,想学golang或Python或Scala,选哪个如果按应用的广度来说,肯定是Python。如果你想调剂一下的话,随便挑一个先开始,然后学着学着看看不喜欢就换,喜欢就继续。本来就是为了调剂的,不用那么功利,喜欢就行了。
另外要尝试的话,在你有编程基础的前提下,可以试试这个:The Python Challenge
如果你选的不是Python也没关系,可以用别的语言实现这里的挑战。这里涉及到字符串*作、文件I/O、http协议解析、正则等基本的东西,上述三个语言都可以实现。自己踩一踩坑再决定喜欢谁吧。亲爱的同学,看来你完全进了误区。 你学了这么多语言, 我让你不论用任何一种你熟悉的语言给我写一个二叉树深度优先遍厉非递归实现你能做到么? 我让你找出两个字符串的相似度,你花费的时间空间复杂度是什么。不论是用那种语言。
我招的资深的python程序员只要用java或者c++把这个写清楚了。不会python我照录。你说的那些语言本身是写字, 用刚笔写也好,用毛笔写也好。但是最终目的是写出优美的诗歌。这个和你用什么笔,甚至用什么语言都没有关系。
只要你有扎实的算法,数据结构基础, 对系统有充分的了解,一般对于用哪个工具写程序并不要紧。 即使你完全不会这个语言给你两个星期也能出活了。
当然你必须有一个拿手的语言面试的时候把你的能力展现出来。
最后纯语言本身没有太大用处,而你会语言上面的系统框架更有用,比如java你会se是应该的,但是你spring, netty, jetty, hibernate, spring boot,jersey2这些框架熟不熟?