1
Radeon 2012-11-24 12:50:30 +08:00
Java当然比Python好
|
2
mercurylanded 2012-11-24 13:16:13 +08:00
python适合新手还有一个原因是构建应用比java要简单。可以很快让新手看到学习的成果。
|
3
lesscome 2012-11-24 13:18:02 +08:00
java是静态语言吗?
|
4
notedit 2012-11-24 13:27:09 +08:00
1, python的错误都有一个错误栈的 不是你说的只抛出Invalid Syntax.
2, python对unicode 哪里支持不好? 3, python的学习资料也很多. 至于你说身边的人数量问题,python是相对小众一些,但是你遇到的问题一般都可以通过google解决. |
5
sNullp 2012-11-24 13:36:18 +08:00
python3对unicode支持已经相当完美了。
另外我觉得python对缩进的严格要求是对新手很有帮助的。 |
6
kid7st 2012-11-24 13:38:40 +08:00
我觉得C和Pascal都很好,想不通为什么java会比python适合新手
|
7
ooscrewyou 2012-11-24 13:40:38 +08:00 6
无力吐槽了
首先確定你的目的是什麼 如果目的是系統地科學地從零開始學習編程,那麼從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的世界裏,英文是通用語言,如果是初學,強烈建議直接讀第一手的資料,早點習慣英語的學習環境。 |
8
khotyn 2012-11-24 13:50:32 +08:00
对于新手只有一个建议,挑一门语言,然后坚持,与其纠结是用 Python 还是 Java,不如马上动手。
|
9
banxi1988 OP @ooscrewyou 首先我觉得你的回复很有质量。感觉高我好几个层次。
我要说明的一点是:场景是新手。 (1)因为是新手,所以容易出现Invalid Syntax错误。 另外 @noteedit 对于语法错误来说,异常栈,常常让人觉得更奇怪。新手会想, 出来一堆东西,真令人讨厌。 (2)unicode对于学编程还是很有影响的,要知道很多新手竟然喜欢用中文命名。 而且新手开始会经常进行IO方面的操作。所以。 (3) 关于英语学习环境,虽然我个人经常看英文文档,也首选英文文档,甚至强迫自己看英文文档,即使有中文文档。 但是当我看到文档中的中文还是很开兴,很兴奋。也许这就是对母语天然的爱。 但是E文就不同了,对于新手来说,E文就是墙。我学django看到是官方文档。但是如果是新手我会推荐中文的。愿望虽然好,但路还是需要人性化。 吃得苦中苦,方为人上人。这不是人性化的学习方式。 |
10
ooscrewyou 2012-11-24 14:40:20 +08:00
@baxi1988 有些東西是天生的 或者是受早期生長環境影響 變成潛意識紮根於性格 就我自己来说 我從小就喜歡外語 高中的時候不太寫作業 一般都是先做英文作業 因爲不用動腦筋 尤其是閱讀理解 就當是看故事 我也從來不刻意背單詞之類的 主要是給自己創造一個英文的環境 比如操作系統用英文 玩魔獸世界用美服客戶端 現在至少在cs方面 讀實用技術之類的原文沒什麼大的障礙了 我看书都是直接看英文 沒買過一本中文書 出於自負 我才不信譯者的水平有我高呢
|
11
zenomac 2012-11-24 14:45:33 +08:00
想尽快找工作糊口的新手 当然java
楼主所谓的那几个坑 其实真不算坑。。 |
12
Muninn 2012-11-24 14:46:38 +08:00
不说别的了 每次看到有人说unicode 的问题 都无力吐槽
学个语言玩 还要学旧版本的 然后痛斥新版已经解决的问题 和那些现在还在吐槽xp的人一样 |
13
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核心编程,然后再啃英文,已经很好了,不像前几年了 |
14
AntiGameZ 2012-11-24 16:48:33 +08:00
各有各的方法论。你说到IDE有错误提示功能,Word对语法错误也有提示功能,但是我也听过无数英语老师大力谴责用Word练写作(虽然我不这么认为)。
只是不同的人不同的说法罢了。Python有Python的好,C也有C的优势。别忘了,大多数时候人们所谓的学编程,不过是学某种语言的语法罢了。就这个层面上来说,C真的是最简单的了。至于运用,完全是另外一回事情。 |
15
VYSE 2012-11-24 17:19:14 +08:00
不先学C?
|
16
ant_sz 2012-11-24 22:43:33 +08:00
不喜欢Java,它让人感觉不到编程的乐趣
本来就是适用与大企业大组织的语言,使用起来不是很灵活。 对于初学者来说,最好的学习方式就是进行一些小的项目,Java在这方面的方便性不如 Python,日常编写小工具也不适合。 总之,Java这种东西日常无论是初学还是使用都不推荐。连 Hello World 都要写一个类的语言实在是不能让人萌发兴趣,尽管 Java 的确是我学习的第一门编程语言。 如果单指的是在大学里开课的话,我也同意初学 C 会比较好,Python 和 Java 封装了太多的底层,过于远离硬件。学习C有助于不光是对学习编程语言有帮助,对于理解操作系统、内存管理等等都很有用。 |
17
yetone 2012-11-24 23:48:28 +08:00
先学机器码,再学汇编!嗯,就是这个样子!
|
18
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!" 以上新手愚見:) |
19
insraq 2012-11-25 00:14:45 +08:00
Write Java for food, write Ruby for fun.
|
21
dingstyle 2012-11-25 12:48:29 +08:00
@ivanlw 手动内存管理,指针,段错误这些C中的概念,都和现代操作系统是息息相关的,建议你看看CSAPP这本书,理解会更深刻
|
22
tioover 2012-11-25 13:04:54 +08:00
先学C比较好
|
23
aisk 2012-11-25 13:30:17 +08:00
到底哪个好,让你妹子写一个读写文件的程序就知道了
|
24
chloerei 2012-11-25 13:57:14 +08:00
看多了这些讨论之后发现大学的课程还挺好的,门电路、汇编、C、C++、Java、数据结构与算法一波啦全学了,额外再参加数学建模用了 Lingo 和 Matlab 这样的工具箱。当然各门掌握都不高,不过不用困扰「先学」什么的问题了,统统都学。
|
25
banxi1988 OP @shaufan 单纯一个helloworld是不能说明问题。我想要说明的是,学那个,在开始的时候,不会遇到那么多奇怪的问题。
遇到问题了也好解决。 同时,@aisk 你知道java的IO大量使用了设计模式。所以。对于新手这也不是问题。 对于这些普通的问题,直接Copy现成的代码就可以了。 |
26
banxi1988 OP @Muninn 我知道py3解决了很多问题,关键是用py3,支持py3的不多,至少目前是。
至于你举例说的xp就更是如此了。你应该知道xp在国内的还有多少粉丝的。 至少现在来说py2.7还是主流,接下来一大段时间也会是。 我个人使用py也有好几年了,会什么我现在还觉得py的unicode支持困扰我。 你可以说我是小白,但是问题确实存在。 |
27
banxi1988 OP |
28
LionRoger 2012-11-25 15:07:17 +08:00
从逻辑上讲,刚觉都没说到点上,如果说新手适合的是Python,JAVA不适合,那意思就是如果不是新手那就是和JAVA不适合Python? @ooscrewyou 说的很好啊,重要的是思想。话说回来,真的想学编程一开始不是应该把什么是编程搞懂?可以尝试用各种不同的语言写出HELLO WORLD,再大致了解原理与系统的时候,用大局观念去判断自己更喜欢或者说更适合哪种语言,而不是一开始就到处去看人多口杂的别人的观点呢?
|
29
reus 2012-11-25 15:09:42 +08:00
如果是专业程序员,那应该什么语言都学,从哪个开始并不重要。
如果是业余程序员,那要明确学习的目的。因为要达到某些目的,是不需要学习通用的编程语言的 REBOL,AutoIt, AutoHotKey, excel这些脚本语言或者编程环境,有时更适合非专业的爱好者学习使用 |
30
kran 2012-11-25 16:15:47 +08:00
c cpp
|
31
BigZ 2012-11-25 16:36:45 +08:00
看你学来干什么,要是准备投身程序员,靠这个吃饭,建议你从c学起,码农入门不建议选择动态语言
如果是用来操作计算机干点编程的零碎活,挑一个能实现你目标最简单的编程工具 |
32
loading 2012-11-25 16:40:15 +08:00
个人感觉写单片机的汇编最好,特别是那种连乘法都没有的,一共几个语法,曲指可数,内存回收?自己陪的地址,随便重用,要多高效有多高效
|
33
ywencn 2012-11-25 16:47:27 +08:00
这种讨论是没有结果的。。。
|
34
wuShiJingZuo 2012-11-25 19:07:07 +08:00
人生苦短!
|
35
jamiesun 2012-11-26 13:49:05 +08:00
学VB吧
|
36
zyAndroid 2012-11-27 09:49:58 +08:00 1
“不喜欢Java,它让人感觉不到编程的乐趣。”
恩,人生苦短,大家快拯救下LZ的GF :) |
37
neek2000 2012-11-27 09:55:31 +08:00
Python是把利器,给小孩玩刀,总是会割到手的
|
38
money 2012-11-27 10:40:34 +08:00
与其在这里讨论这个问题,不如马上行动,记得我开始时也在纠结过这个问题,但是无果
|
39
banxi1988 OP @neek2000 这个说得很中肯。虽然Java也是把利器,但是是传统利器,就好比是火,大家都知道他的危险。
但是Python不是主流的武器,大家对它的伤害不好接受。 |
40
banxi1988 OP @ant_sz
(1)我在之前有说,其实懂得好的写软件的技术,如重构啊,设计模式啊,写这些都有乐趣, 当然我也是从读了重构一书,才感觉到不少乐趣的。因此觉得乐趣这种东西,跟语言有一点关系, 但不是决定因素,也不是主要因素。 (2)我发现很多人都建议从底层学起,但是只是说对操作系统等等有了解。 但是,有时候觉得这种想法有点一厢情愿。就说我身边的一些很多的大学同学吧,学了C,C++,操作系统,照样对这些没有什么了解。对于这些东西 ,其实底层的就是高层的,深层的东西 。 虽然有对于理解计算机系统有些帮助 。但是这将软件开发层次停留在80-90年代。 (3)现在的软件开发,已经到了分工细化的时代了。有了更多的积累的软件开发技术, 也有了更多的软件开发积累。在软件开发也产生比较显著的分工。就好比一个前端,不需要知道C也可以是一个好前端。因为没有多大的关系。 (4)对于一个新手来说,站在巨人的建立的台阶上,对于大部分人来说,各有分工,各有所专,才是时代的潮流。 (5)当然,还是需要一些创造者,一些重复造轮者。 回到Python Or Java上面来说。 Python相比Java来说,就是不规整,对于正常的一般人来说,Java看起来更合适,因为是精心设计的。 |
41
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,职位只有一个,竞争多么激烈啊? |
42
l0wkey 2012-11-27 13:17:00 +08:00
学VB [捂嘴笑]
|
43
banxi1988 OP @iwege 这个确实,我觉得javascript+html+css是一个很好入门道路。
我想我可能会采取这个方法的。 chrome+sublime text2加一些插件,就很不错了。 但是不能Copy。要真的学javascript还是得自己手写来学,应该学习《Javascript高级程序设计》 css也是一样,应该完整的学习《CSS权威指南》。 对于界面有足够的思考。前端能够很快让人做出一些可以看得到的东西,能让人有成就感, 女生入门之后做前端也是一个很好的方向。 |
44
cpylua 2012-11-27 15:05:30 +08:00
A quote: "Java is write once, run away." 个人不推荐让新手接触Java那种OOP
|
45
yangxiaoyong 2012-11-27 15:10:44 +08:00
Java 没有认真去接触过, Python, 嗯,那真是写的一个叫爽。
真心建议楼主花点时间在 Python 上。 BTW, Java 真不是静态语言。 |
46
Narcissu5 2012-11-27 15:38:16 +08:00
还是java好点吧,写错什么编译器首先就不答应
|
47
cpylua 2012-11-27 16:25:34 +08:00
@yangxiaoyong Java真是静态显式强类型语言,语言的静态动态一般是按在什么阶段enforce type system constraints划分的
|
48
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依然是初学者首选这个观点是很有道理的 |
49
liuyanghejerry 2012-11-27 22:56:59 +08:00
为啥我觉得PHP编程入门最简单呢= =
@ant_sz 最后一个观点我不是很认同,编程语言会多少跟自身发展没什么直接关联,语言之后的实际背景、环境、模型、生态体系等等才是关键。学习PHP、RoR重要的在于理解B/S模型,C/C++重要的在于系统编程,Erlang、JS重要的在于并行并发。当然有些语言配套库很多,一门语言就能搞定多个领域。依靠多学语言来获得发展,难以逃脱整天啃语法糖、纠结语法细节的结局。 C的内存模型相对来说最简单,特性也比较少,从这一点来说适合新手入门确实没错。 |
50
banxi1988 OP @ant_sz 对于有理想的程序员来说,你说的很有道理,值得学习。
真正学好编程也真不是一年两年的事。对于减少新手入门,希望能看到你深入的见解。 我的一个简单的想法就是:人性化,不要太geek,减少入门的痛苦,增加入门的甜蜜。 |
51
yegle 2012-12-07 22:06:53 +08:00
有句话说出来可能有点刺眼。
9楼说自己是个新手。新手给另一个新手推荐入门语言,不觉得很可笑? |
53
young 2012-12-07 23:22:18 +08:00
唉~~ 楼主又挑起了战争
语言就是一种工具,主要还是自己的思维能力 |
54
hxgdzyuyi 2012-12-07 23:28:30 +08:00
不知道几年以后lz看到这个帖子会是什么想法
|
55
Mutoo 2012-12-08 00:07:29 +08:00
我就不跟大家争了。难得LZ女朋友想学编程,推荐 processing ,简单易懂,以图形交互为主,比传统的字符界面或窗体程序都要好玩,女生比较容易喜欢。我GF学完表示非常有意思。
|
56
jarlyyn 2012-12-08 02:26:34 +08:00
python可能不是最适合程序员的语言,但肯定比java合适。
首先。楼主,只要你想写程序,缩进是必须要养成的习惯。 其次,请自行比较helloword程序员长度。 第三,ide?除了写c#我用过monodeveloper,实际工作中使用的都是kate…… 第四,可能我学过写过的语言太杂,但是作为程序员,用的什么语言重要么?项目需要的话,换语言开发很正常吧。关键还是经验--之大什么是错的,查找文档的能力,熟悉各种库,以及 |
57
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入门。 |
58
ccming 2012-12-08 07:28:56 +08:00
学lisp
|
59
pepsin 2012-12-08 08:38:56 +08:00
个人觉得与其说那么多不如随便拽本教程开始学。
过程碰上问题就搜。就是搜,看,写代码,搜,看,写代码的循环。这个好那个好的,其实都差不多。无非是多几个轮子少几个轮子而已。 一旦你嘴巴不动开始用脑子和手指了,哪种语言都不重要了。 |