个人觉得新手学编程还是先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呢?


所以。
12581 次点击
所在节点    Python
59 条回复
Radeon
2012-11-24 12:50:30 +08:00
Java当然比Python好
mercurylanded
2012-11-24 13:16:13 +08:00
python适合新手还有一个原因是构建应用比java要简单。可以很快让新手看到学习的成果。
lesscome
2012-11-24 13:18:02 +08:00
java是静态语言吗?
notedit
2012-11-24 13:27:09 +08:00
1, python的错误都有一个错误栈的 不是你说的只抛出Invalid Syntax.
2, python对unicode 哪里支持不好?
3, python的学习资料也很多. 至于你说身边的人数量问题,python是相对小众一些,但是你遇到的问题一般都可以通过google解决.
sNullp
2012-11-24 13:36:18 +08:00
python3对unicode支持已经相当完美了。
另外我觉得python对缩进的严格要求是对新手很有帮助的。
kid7st
2012-11-24 13:38:40 +08:00
我觉得C和Pascal都很好,想不通为什么java会比python适合新手
ooscrewyou
2012-11-24 13:40:38 +08:00
无力吐槽了
首先確定你的目的是什麼
如果目的是系統地科學地從零開始學習編程,那麼從scip開始吧。跳出作爲工具的語言的框架,學習编程最基礎的概念。http://www.eecs.berkeley.edu/~bh/sicp.html
如果你更加關注industry,注重於build things,Java是一個選擇。個人更加喜歡Python,Ruby這類語言。Because they make my life easier.repl,高阶函数,duck typing這些特性大大提高效率,另外Python和Ruby都是很流行的語言,社區很活躍,各種第三方庫,有很好的package manager(pip,rubygem)

另外關於樓主說的三點:
1 我没發現你說的都是Invalid Syntax的錯誤提示,是不是因爲你不熟悉python,老是寫出錯誤的語法來。
2 python對unicode支持確實存在問題,不過這點和學編程沒有關係,只是處理某些實際問題會麻煩點。至於縮進純屬個人喜好。我就很喜歡,不太喜歡Ruby裏面各種do end。
3 如果想進入IT行業,還是Java比較合適,可能吧,我不關心IT行業,我只是想成爲一個更好的程序員。Python的學習資料絕對不少。對程序員來說英文很重要,我在某本Java書上看到的維特根斯壇的一句quote,原話忘了,大意是If I spoke a different language, I would peceive a different world.語言不僅僅是交流的工具,還是表達思想的媒介,不同的語言有不同的表達能力,學習語言,不管是自然語言還是編程語言,會拓寬人的思路,幫助你思考,當然思想是先於語言的,我遇到過英文很差,但是數學思維很好理科學得很好的人。在CS的世界裏,英文是通用語言,如果是初學,強烈建議直接讀第一手的資料,早點習慣英語的學習環境。
khotyn
2012-11-24 13:50:32 +08:00
对于新手只有一个建议,挑一门语言,然后坚持,与其纠结是用 Python 还是 Java,不如马上动手。
banxi1988
2012-11-24 14:15:11 +08:00
@ooscrewyou 首先我觉得你的回复很有质量。感觉高我好几个层次。
我要说明的一点是:场景是新手。
(1)因为是新手,所以容易出现Invalid Syntax错误。
另外 @noteedit 对于语法错误来说,异常栈,常常让人觉得更奇怪。新手会想,
出来一堆东西,真令人讨厌。
(2)unicode对于学编程还是很有影响的,要知道很多新手竟然喜欢用中文命名。
而且新手开始会经常进行IO方面的操作。所以。
(3) 关于英语学习环境,虽然我个人经常看英文文档,也首选英文文档,甚至强迫自己看英文文档,即使有中文文档。 但是当我看到文档中的中文还是很开兴,很兴奋。也许这就是对母语天然的爱。
但是E文就不同了,对于新手来说,E文就是墙。我学django看到是官方文档。但是如果是新手我会推荐中文的。愿望虽然好,但路还是需要人性化。
吃得苦中苦,方为人上人。这不是人性化的学习方式。
ooscrewyou
2012-11-24 14:40:20 +08:00
@baxi1988 有些東西是天生的 或者是受早期生長環境影響 變成潛意識紮根於性格 就我自己来说 我從小就喜歡外語 高中的時候不太寫作業 一般都是先做英文作業 因爲不用動腦筋 尤其是閱讀理解 就當是看故事 我也從來不刻意背單詞之類的 主要是給自己創造一個英文的環境 比如操作系統用英文 玩魔獸世界用美服客戶端 現在至少在cs方面 讀實用技術之類的原文沒什麼大的障礙了 我看书都是直接看英文 沒買過一本中文書 出於自負 我才不信譯者的水平有我高呢
zenomac
2012-11-24 14:45:33 +08:00
想尽快找工作糊口的新手 当然java

楼主所谓的那几个坑 其实真不算坑。。
Muninn
2012-11-24 14:46:38 +08:00
不说别的了 每次看到有人说unicode 的问题 都无力吐槽
学个语言玩 还要学旧版本的 然后痛斥新版已经解决的问题
和那些现在还在吐槽xp的人一样
jjx
2012-11-24 16:31:04 +08:00
善用工具,像非法语法之类的 只要用linter之类就可以解决,如sublime text2装个sublimelinter 输入show error list就可以看到了
pycharm /pydev 都集成的

出错一堆信息,比java好多了,python的出错时最容易定位的,因为python调用层次少,不想java/dotnet ,一大堆无关的堆栈


用中文命名的我就不评论了

python现在的中文书籍,现在出的更多了,买python 标准库,cookbookm核心编程,然后再啃英文,已经很好了,不像前几年了
AntiGameZ
2012-11-24 16:48:33 +08:00
各有各的方法论。你说到IDE有错误提示功能,Word对语法错误也有提示功能,但是我也听过无数英语老师大力谴责用Word练写作(虽然我不这么认为)。

只是不同的人不同的说法罢了。Python有Python的好,C也有C的优势。别忘了,大多数时候人们所谓的学编程,不过是学某种语言的语法罢了。就这个层面上来说,C真的是最简单的了。至于运用,完全是另外一回事情。
VYSE
2012-11-24 17:19:14 +08:00
不先学C?
ant_sz
2012-11-24 22:43:33 +08:00
不喜欢Java,它让人感觉不到编程的乐趣

本来就是适用与大企业大组织的语言,使用起来不是很灵活。

对于初学者来说,最好的学习方式就是进行一些小的项目,Java在这方面的方便性不如 Python,日常编写小工具也不适合。

总之,Java这种东西日常无论是初学还是使用都不推荐。连 Hello World 都要写一个类的语言实在是不能让人萌发兴趣,尽管 Java 的确是我学习的第一门编程语言。

如果单指的是在大学里开课的话,我也同意初学 C 会比较好,Python 和 Java 封装了太多的底层,过于远离硬件。学习C有助于不光是对学习编程语言有帮助,对于理解操作系统、内存管理等等都很有用。
yetone
2012-11-24 23:48:28 +08:00
先学机器码,再学汇编!嗯,就是这个样子!
shaufan
2012-11-25 00:05:35 +08:00
我看過一本書叫《黑客與畫家》,PG寫的。裏面對JAVA的有很獨到的見解和分析(其實多數是吐槽),大部分我都覺得很有道理。

對我來說,如果想作爲個人或者企業做大PROJET的話JAVA應該是不得不學……
但如果是出於興趣自學,短期內希望實現一個小PROJET的話,PYTHON應該是最優先的選擇之一吧。

總的來說,我覺得編程語言應該是越接近人類語言、越抽象化的,會越適合無編程基礎的新手學習。最蠢的方法是比較一下各自HELLO WORLD程序的實現語句行數……?

-------------------------------Java----------------------------------------
public class HelloWorld {

public static void main(String[] args) {
System.out.println("Hello, World");
}

}
------------------------------Python----------------------------------
print "Hello, World!"


以上新手愚見:)
insraq
2012-11-25 00:14:45 +08:00
Write Java for food, write Ruby for fun.
ivanlw
2012-11-25 00:15:00 +08:00
@ant_sz 你什么大学的??
C语言课程有可能跟我涉及操作系统?真扯淡

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

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

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

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

© 2021 V2EX