V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ygmpkk
V2EX  ›  程序员

从开源项目中学习编程语言

  •  
  •   ygmpkk ·
    ygmpkk · 2012-06-28 14:14:57 +08:00 · 5864 次点击
    这是一个创建于 4538 天前的主题,其中的信息可能已经有所发展或是发生改变。
    突然有这么一个想法,计算机的语言有很多,学习并且掌握一门语言需要一段的周期,很多人都是自学的,编程规范和一些特性使用的不是很好,有些特性可能都还不知道,我就想找开源项目中最经典又优秀的项目作为那门语言的学习语法、特性、规范等等;

    C、C++、Objective-C、Java、PHP、Python、Ruby、C#、Javascript等等很多的语言;

    以前看过一篇文章是说到从github中学习编程,github的项目太多了,我想从github扩展出来一个项目作为一个学习的平台;

    不知道市场上有没有这样的平台?开发这样的一个学习的平台,会有多少人收益呢?
    17 条回复    1970-01-01 08:00:00 +08:00
    AlloVince
        1
    AlloVince  
       2012-06-28 14:21:45 +08:00
    想法不现实。

    越是优秀的开源项目,学习成本越高。看看jQuery的源码,没有深厚的js功底基本看不懂什么,更不要说入门学习了。

    不如直接山寨Codecademy,国内反正还没有
    levn
        2
    levn  
       2012-06-28 14:25:09 +08:00
    已经有经验的人也会想要学习代码的。
    neildd
        3
    neildd  
       2012-06-28 14:37:24 +08:00
    从开源项目里学习编程语言,我认为是不靠谱的。
    第一,开源项目一般都做的比较大,一个连语言都不熟悉的人很难找到学习的切入点。
    第二,有很多开源项目的使用文档比较齐,但是开发文档少之又少,需要自己摸着石头过河。

    我个人觉得,先从语言的官方文档学习,再买本评价比较好的入门书籍(非国产)。
    对这门语言熟了,再看看开源项目,学习学习项目的结构、思路、算法。
    saturn
        4
    saturn  
       2012-06-28 14:49:37 +08:00
    界面几位总结的很好。你可以去看看envato旗下的几款Tutorial产品,如果你能弥补这个市场空缺,在国内应该会很火。

    http://envato.com/

    从初级到高级、再到PodCast,各种教程。文章投稿采用付费制。类似的网站还有Sitepoint。
    zhuangbiaowei
        5
    zhuangbiaowei  
       2012-06-28 18:18:42 +08:00   ❤️ 2
    我在做一件类似的事情:《借助开源项目,学习软件开发》

    http://www.teamhost.org/projects/learn-with-open-source/wiki

    我认为学习某种语言之后,才能去了解这个语言的开源项目,然后在学习的过程中,加深对这个语言的理解。如果指望通过某个开源项目,来入门,可能会很困难。
    ahu
        6
    ahu  
       2012-06-28 18:24:39 +08:00
    新手可以看看这里, http://book.42qu.com
    binux
        7
    binux  
       2012-06-28 18:37:31 +08:00
    用开源代码学习语言不靠谱

    * 魔法太多,为了跨平台,通用型,特定bug,性能等考虑,开源代码中的魔法太多,如果是为了语言学习,以上来就是这么多魔法,一下就晕了
    * 大部分开源程序是为了特定用途编写的,相关协议、操作系统特性或者算法比编码更重要,对于语言学习没有意义


    不过作为各种协议,操纵系统,算法研究,跨平台程序编写的例子更好。
    metaphor
        8
    metaphor  
       2012-06-28 18:43:04 +08:00   ❤️ 1
    曾经也思考过这样的问题,我觉得最大的障碍,就像前面几位总结的,是新手面临一个庞大的架构而无从下手,而分析相应项目代码的资料又非常匮乏。对于新手,个人觉得应该由浅入深,或许构造一个从低级到高级各个阶段的项目代码仓库配合会比较理想。但是这样难度很高...或许可以采用布置课题,让大家上传相应作品(最好能有开发文档),并投票给相应作品打分。然后让想要学习的朋友通过分析高分作品的源代码来明白某一门语言。
    额...以上纯属个人见解,欢迎大家提出更好的解决方案。
    levn
        9
    levn  
       2012-06-28 19:01:52 +08:00
    我觉得看实际代码肯定不是为了学习语言本身。
    levn
        10
    levn  
       2012-06-28 19:19:58 +08:00
    语言的特性基本上都可以通过构建很缩简的代码例子来说明,并不需要实际代码。
    实际代码和代码例子的不同是它具有一个应用的上下文情境,从中你能学会如何运用语言中的特性来满足上下文情境的需要。
    args
        11
    args  
       2012-06-28 20:25:39 +08:00
    推荐android,主流技术一应俱全……
    chuck911
        12
    chuck911  
       2012-06-28 20:34:07 +08:00
    @AlloVince 越是优秀的项目,代码越不坑爹
    cloudream
        13
    cloudream  
       2012-06-28 21:38:41 +08:00
    从jQuery上学习api设计比学习到js那些琐碎的技巧重要的多⋯⋯
    ygmpkk
        14
    ygmpkk  
    OP
       2012-06-28 23:12:27 +08:00
    @AlloVince 可以这样来做,一些爱好者可以将代码整理出一套可学习的思路;
    @levn
    @neildd
    @saturn
    @zhuangbiaowei
    @ahu
    @binux
    @metaphor
    @levn
    @levn
    @args
    @chuck911
    @cloudream
    感谢各位的回复,象我这种完全自学编程的人,即使是学校或者培训出来的,其实是非常需要在国内有这样的平台来帮助学习,现在流行的是“社会化”社区运营;

    而且国内也缺少一种环境,高手能够提携新手,帮助入门学习编程;一方面是竞争的压力都很大,特别是大城市,能够活的轻松一些已经是非常的不容易了,这也可以理解;另一方面就是气氛不太浓重,V2EX的情况可以视为特例,这里的人都很热情;但大多数的情况下,特别是在线下,你能够让人手把手的教你是不可能的;学习一些开源框架的成本是很高,如果一个社区平台有很多人贡献文档和注释,能够让你少走很多弯路,折算回来,后者更划算,而且编程的质量也非常高(这是理想状态了);

    或者可以改变一点思路(思路现在还没想好,后续再回复);
    reorx
        15
    reorx  
       2012-06-28 23:24:46 +08:00
    希望在未来,开源不仅仅指代码,还指涉及到的技术和经验。也许到了那一天,知识的学习才真正具有传承性,而不像现在只能每人自己去领悟。
    onesuper
        16
    onesuper  
       2012-06-28 23:39:33 +08:00
    @ygmpkk

    如果是学习语言的特性、语法,还是看书比较靠谱。

    如果是想要实践,可以做自己的项目,已经有github这样的平台了~

    如果想要提高水准,可以去读别人的源代码。

    再说程序员不都喜欢单干么?
    zhuangbiaowei
        17
    zhuangbiaowei  
       2012-06-29 09:47:29 +08:00
    @ygmpkk 期待你更加详细的思路。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1056 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.