个人觉得新手学编程还是先Java等静态语言为好,而不是Python

2012-11-24 12:48:09 +08:00
 banxi1988
RT:
以前我在ubuntu论坛的时候,见到有不少人觉得Python适合初学者。
有些时候,我也那么觉得,但是现在我的观点改变了。因为前两天我GirlFriend说她想学编程。
然后我仔细想了下,学什么能够直接切入主题些,不能在开始时就被各种问题折腾。

(1)我承认python有ipython这么一个非常不错的学习工具。
但是还是不如Eclipse这个优秀的IDE。也许因为Java是静态语言吧。写代码的时候,各种错误,什么的都有很好的提示,语言也很规范。
python的错误提示,常常就是一句"Invalid Syntax" 然后没有了。这对新手来说几乎没有什么用。
但是还有一个很重要的一点就是,我个人很喜欢重构这本书,然后,想想,支持python重构的ide,几乎还不成熟或者支持的重构很少。

(2)对于中国人说更是如此了,Java对unicode支持不用说,但是python就不一样了。
我都为此,折腾到心碎了,更别说新手了。
还有python中的tab和space工,缩进啊,这个对于新手肯定不友好。

(3)很多新手以前也放学过C类的语言,如此再想进入IT行业,还是Java类语言比较合适。
各种学习资料,视频资料。懂的人也多,也许我们身边10个就有5个是会Java的。但是Python呢?


所以。
13391 次点击
所在节点    Python
59 条回复
iwege
2012-11-27 13:13:59 +08:00
那按照楼主所说:

我觉得,最好的还是javascript。

主流,开源,资料一大把,绝对够资格了吧?

想要研究?网页另存为,多happy? chrome自动格式化,所有调试都可以在浏览器里面完成?

你是新人? 想研究什么?特效?javascrpt配合dom,底层?server?nodejs也提供面向桌面的。

移植性不如java?你都要跑eclipse了还跑不起一个chrome?

至于错误神马的,有各种代码可以copy研究。并且同时熟练同步异步编程、桌面、服务器端。

然后楼主还想要比性能么?对一个新人来说,都跑eclipse了还在乎性能?开玩笑吧?

类的继承?原型继承?统统一网打尽。

想玩其他的源码风格?coffee-script typescript 还不够你嗝屁的?


最后说了这么一大堆,其实新人最终成为码农的时候,大家都知道会用类似ror一样的玩意快点完成任务然后去玩自己的东西。

至于把Java当作实力语言,一个很严肃的问题:

10个码农人有5个玩Java,职位只有一个,竞争多么激烈啊?
l0wkey
2012-11-27 13:17:00 +08:00
学VB [捂嘴笑]
banxi1988
2012-11-27 13:24:07 +08:00
@iwege 这个确实,我觉得javascript+html+css是一个很好入门道路。
我想我可能会采取这个方法的。
chrome+sublime text2加一些插件,就很不错了。
但是不能Copy。要真的学javascript还是得自己手写来学,应该学习《Javascript高级程序设计》
css也是一样,应该完整的学习《CSS权威指南》。
对于界面有足够的思考。前端能够很快让人做出一些可以看得到的东西,能让人有成就感,
女生入门之后做前端也是一个很好的方向。
cpylua
2012-11-27 15:05:30 +08:00
A quote: "Java is write once, run away." 个人不推荐让新手接触Java那种OOP
yangxiaoyong
2012-11-27 15:10:44 +08:00
Java 没有认真去接触过, Python, 嗯,那真是写的一个叫爽。

真心建议楼主花点时间在 Python 上。 BTW, Java 真不是静态语言。
Narcissu5
2012-11-27 15:38:16 +08:00
还是java好点吧,写错什么编译器首先就不答应
cpylua
2012-11-27 16:25:34 +08:00
@yangxiaoyong Java真是静态显式强类型语言,语言的静态动态一般是按在什么阶段enforce type system constraints划分的
ant_sz
2012-11-27 17:12:20 +08:00
@banxi1988

也许是我们看问题的角度不同,你更多的是从产业化的角度来看问题的,因为java规整和严格的语法,程序员在参与大型项目的时候是有必要了解他的。而我则主要从极客的角度来看问题,像java这样的特性就没必要。

java的精心设计并不意味着python的代码不是精心设计的。实际上,java的代码可以写得很丑,而python则精心设计了语法,让一切都很自然,强制缩进规则实质上是强制你写出至少形式上是规整的代码。必须要牢记,程序员和码农只是一线之遥。因为语法上的规整而认定大部分人都适合什么语言是不正确的。

在黑客与画家一书中提到,动态语言等适合在开发过程中动态的更改需求,更适合现在瞬息万变的市场竞争,实际上我们看到,从twitter开始,各种成功的创业公司都在采用开发效率更高的语言,其中包括基于jvm的scala等。这表明现在的程序员对工作时的工具提出了更高的要求,同时也更加强调创造力和舒适度。语法规整的重要性已经下降很多了。

其次对于底层和效率的问题,我承认现在的分工很细致,但也并非没有涉及底层的程序员。实际上,现在的上层程序员实在是过于泛滥,反倒是底层的比较抢手。实际上,即使是java程序员也需要对底层有所了解,并不是把一切交给虚拟机来优化就万事大吉了。同样的java程序不同的实现方法效率会有很大差别。因此有必要从一开始就把这些基础打好,因此学好c是很重要的。

我希望我们这里讨论的至少是有理想的程序员,大学中是有很对人基础的操作系统等知识都没学好,但这并不意味着这种现象是合理的。这不光是个人的原因,也有教育等诸多因素。虽然抛弃这些基础,也能来开发软件,可是日后发展必将遇到瓶颈,就像当初java盛行时有一种观点认为以后编程不在需要数学功底算法了一样,认为只需要学习表面的技术就可以的看法是完全错误的,你将局限于作为一个简单的开发程序员,而很难进一步发展。等到年纪大了如何跟年轻力壮的青年竞争。

在互联网时代,难以复制的才是有价值的,google,facebook这些巨头的核心竞争力还是在算法和底层,能够做表层应用则门槛太低,真心不缺人,腾讯随时都有大把这样的开发人员闲置,坐等新潮流来复制,而且这条道路并不好走。所以一个程序员要有更大的发展,底层的基础在早期是一定要打好的。

此外,推荐c的一个原因还有他几乎是包括java在内大多后来编程语言的前辈和学习者,学好c以及理解c的编程思想有助于学习其他编程语言,而一个程序员如果只会一门语言,即使再精通也不可能有太大发展。程序员有必要不断提高自己才不会落后,尤其是在大学里的预备程序员,大学里空闲时间那么多,学多少东西都够了。因此c依然是初学者首选这个观点是很有道理的
liuyanghejerry
2012-11-27 22:56:59 +08:00
为啥我觉得PHP编程入门最简单呢= =

@ant_sz 最后一个观点我不是很认同,编程语言会多少跟自身发展没什么直接关联,语言之后的实际背景、环境、模型、生态体系等等才是关键。学习PHP、RoR重要的在于理解B/S模型,C/C++重要的在于系统编程,Erlang、JS重要的在于并行并发。当然有些语言配套库很多,一门语言就能搞定多个领域。依靠多学语言来获得发展,难以逃脱整天啃语法糖、纠结语法细节的结局。

C的内存模型相对来说最简单,特性也比较少,从这一点来说适合新手入门确实没错。
banxi1988
2012-11-27 23:01:59 +08:00
@ant_sz 对于有理想的程序员来说,你说的很有道理,值得学习。
真正学好编程也真不是一年两年的事。对于减少新手入门,希望能看到你深入的见解。
我的一个简单的想法就是:人性化,不要太geek,减少入门的痛苦,增加入门的甜蜜。
yegle
2012-12-07 22:06:53 +08:00
有句话说出来可能有点刺眼。

9楼说自己是个新手。新手给另一个新手推荐入门语言,不觉得很可笑?
banxi1988
2012-12-07 22:58:19 +08:00
@yegle 因为同是新手,没有什么代沟。
young
2012-12-07 23:22:18 +08:00
唉~~ 楼主又挑起了战争
语言就是一种工具,主要还是自己的思维能力
hxgdzyuyi
2012-12-07 23:28:30 +08:00
不知道几年以后lz看到这个帖子会是什么想法
Mutoo
2012-12-08 00:07:29 +08:00
我就不跟大家争了。难得LZ女朋友想学编程,推荐 processing ,简单易懂,以图形交互为主,比传统的字符界面或窗体程序都要好玩,女生比较容易喜欢。我GF学完表示非常有意思。
jarlyyn
2012-12-08 02:26:34 +08:00
python可能不是最适合程序员的语言,但肯定比java合适。
首先。楼主,只要你想写程序,缩进是必须要养成的习惯。
其次,请自行比较helloword程序员长度。
第三,ide?除了写c#我用过monodeveloper,实际工作中使用的都是kate……
第四,可能我学过写过的语言太杂,但是作为程序员,用的什么语言重要么?项目需要的话,换语言开发很正常吧。关键还是经验--之大什么是错的,查找文档的能力,熟悉各种库,以及
jarlyyn
2012-12-08 02:29:41 +08:00
转我自己以前的某贴,或许你见过。
其实,就我用过的这10来们语言来说,一门完备的编程/脚本语言,基本都能完成你所需要的部分功能,差别无非在效率的高低,公共库的多少而已。撇开生态环境,就语言本身来说,不少主流语言都有其鲜明的特点。比如lua突出本身的简单,比如我所没有接触过的perl所推崇的用多种方法解决同一个问题。而python给我的感觉,就是规范,易读。

python的优点:

语法里强制缩进,强制命名空间,不使用容易产生魔幻效果的花括号和分号,使得不同程序员写出的代码风格高度的统一。能让人从一开是就养成良好的的习惯,也让你能很容易的学习别人写的python程序
作为一门出色的脚本语言,有着极出色的使用范围。web有django,web.py,GUI有pygtk/pyqt,一抓一大把的范例程序,就算用来维护系统,也是很好的选择。大部分发行版都预装python,yum甚至都是用python写的。不光学习的资源多,学好了用途也非常广泛。
跨平台做的很不错。linux下自不用说,win的python表现也还说的过去。magoo,android上也有pytho的身影。不至于让人当心觉得学了后派不上用处
主流语言的元素齐全。学好后转任何一门程序都不会很吃力。
很简单的就能出可见的成果,这样在学习的过程中不断的有使用价值的产品出现,能不停的激励自己提供动力。
总的来说,我认为最适合初学者的理由,还是第一点。从我的角度来说,语言只是门工具,过多的把创造力放在语法上,反而不容易集中在开发本身上。撇开这点,对于初学者来说,就如同学写字要从方方正正的字体开始一样,脚步走的踏实了是最重要的。如果什么时候觉得pyhon限制的你的天赋的发挥,再换语言也不迟。反正编程这东西,是一理通,百理明的。

所以,我推荐,新学编程的人,从python入门。
ccming
2012-12-08 07:28:56 +08:00
学lisp
pepsin
2012-12-08 08:38:56 +08:00
个人觉得与其说那么多不如随便拽本教程开始学。

过程碰上问题就搜。就是搜,看,写代码,搜,看,写代码的循环。这个好那个好的,其实都差不多。无非是多几个轮子少几个轮子而已。

一旦你嘴巴不动开始用脑子和手指了,哪种语言都不重要了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/53193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX