`
lvwenwen
  • 浏览: 958899 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

为什么借助开源学习是最有效的?

阅读更多
为什么借助开源学习是最有效的?
为什么要学习
  学习有不同的目的:有人学习是因为兴趣或者好奇;有人是为了增加生存的技术,把学作为改变工作、生活状态的手段;当然,也有些人,学习是为了思想的交流,与周围的人交流,与远方的朋友交流,与过世的先哲交流。
  静下心来,仔细想想自己为什么要学习很重要。如果学习的目的不明确,学习就缺少源动力。这种思考在学习之初是需要的,在学习过程中也同样是需要的。因为随着学习的进行,个人对学习的态度、感受也会发生变化,学习的目的也需要及时的调整。
  一个善于学习的人,是能充分利用各种学习机会进行学习实践的人。有人七十多岁开始学画油画,也有人利用每天坐地铁的时间学会一门外语,甚至还有些人把微博、网络公开课作为学习的重要工具。只要学习目的明确了,学习就变成了一件有意义的事,因而才可能持久。
  生物进化的几百万年,才使人类有了学习的能力,这种能力是区别与一般动物的。人类的学习是一个觉醒的过程,近百年人类文明高速演进,特别是互联网的出现,使学习的从原始的环境适应演进为主动的创造并迅速转为社会向上的推动力,或者破坏力。
  源代码是最好的营养

  知识是多样的,学习的目的不同,学的内容也不同。计算机的出现,使学的工具发生了根本的变化,而程序的灵魂,因此学习编程不仅仅是软件工程师的事,它应该成为每个社会成员的一个基本的技能。正如语言是人类交流的基本技术,编程是人与机器交流的基本技能。学会编程,可以使机器按照你的意志运行,使每个人按自己的兴趣整合信息资源,以利于更有效的学习。
  软件是近百年发展最快的技术之一,特别是随着智能手机与平板电脑的普及,软件技术更是渗透到了我们生活的各个方面。学会编程,并不意味着要去要去建一个复杂的系统。其实写的个报表的计算公式或者做一个小动画可以是一种编程的体验。
  软件编程需要的基本环境就是一台电脑,当然如果有互联网的接入则更利于交流与技术信息的查询。
  使用 Linux 最大的好处是它本身就是一个软件开发的开放平台,你可以方便地下载各种开发工具,比如 gnu c/c++,python 或者其它。你应该学会使用 apt-get, 这是一个 Ubuntu 下强大的软件包管理工具。
  在网站 kernel.org 上,有各种版本的内核源代码,如果你想从根本上学习操作系统,也可以通过 LFS 快速地学习内核构建的过程。
  源代码开放的最大的好处是我们不需要重复设计和制造轮子。每个人都可以在软件巨人的臂膀上构造自已的梦想代码天堂。
  无论从美国的 facebook 谷歌苹果还是中国的华为成功的经验中我们可以看到,开源的代码以及开源的项目是当前众多商业公司的技术立足之根本。开源已经造就了无数商业神话。我们大部分人只知道苹果的酷,但很少有人在苹果的版权说明中,看有关开源项目的罗列。
  微软的比尔盖茨以及苹果的乔布斯大家耳熟能详,但对软件产业最有影响力的人应该是出生于芬兰的李纽斯(Linus Torvalds)。谷歌正是采用 linux 为内核,才使 android 几乎在一夜之间串红并重创诺基亚。而李纽斯在软件界的影响力,堪比罗马教皇。
  有一部电影叫源代码,也许对代码开源化的一个隐喻。如果你读到了关键的源代码,也许你真的可以改写历史。当然,李纽斯说得很好,开源应该是快乐的,“Just for fun”。我们不需要太多的使命感与焦虑,改变世界也许只是一个顺带的结果。
  方向不对,努力白费
  在中国,如果你想面朝大海,应该是一路向东。当然向西也是可以的,不过要多费些周折。技术的更新非常快,但如果把握了大势往往可以事半功倍。
  举一个实际的例子:十多年前,PHP 是一个相对冷门的编程工具。在很多场合,很多人都不好意思说自已是搞 PHP 开发的。而如今,PHP 已经成为主流的开发工具,很多搞 .net 处于生计的考虑,不得不转向 Java,或者 PHP。
  选择开发工具只是软件工匠们需要认真定夺的一个方面。其它如系统构架、测试方法、团队管理、决策者眼光等等,更是关系每个程序员未来的诸多要素。
  开源的精神内涵使学习变得更加有意义
  在商业极度发展的今天,人们对物质的无限追求使很多人忘记了生活的本质。人被异化为物的附属品,价值被虚拟的概念、标签重置。
  互联网的出现,促进了人类相互之间的沟通。软件高速更新发展的自然需求和因团队协作所带来的有效性、高效性造就了一个全新的文化:开源文化。软件便与分享、开源代码便于扩展的特质,使以 Linux 操作系统为代表的开源项目迅速崛起。大批的软件工程师不仅通过开源项目找到的精神寄托、同道中人,而且还找到了与商业社会有效融合的模式与渠道,解决了事业与兴趣结合问题,实现了生活、学习、工作甚至社会公益有完美统一。
  在开源精神的感召下,学习变得更加积极主动。在分享、贡献的核心价值体系下,人们能充分体会人心温情的另一面。与传统商业社会利用信息不对称在交易中图谋利益最大化不同,开源世界里的人们在创造、协作的过程中完成一个又一个不断成长的软件系统,这些系统有些使整个社会运行更有效、当然也有的在损坏甚至危及社会的安全。人类精神世界的两面性在开源世界里更直接、更激烈地表现出来,正在影响着现实的诸多方面。
  开源社区是最好的学校
  软件是构建虚拟世界的基础,而开源社区则是软件新技术产生、发展的主要场所,因而也是学习软件技术最好的学校。
  当前最大的网络社区应该算游戏社区,这个社区的人大多是在消费社会资源。而开源社区则分化成两个阵营:一个是以创新、创造为目地的,创造社会价值;另一个则是以破坏、非法取得信息资源为目地,损毁社会资源与体系。
  在开源社区里,有大量热心的程序员他们乐于分享自已对技术的理解、心得,他们通过各自的行动扩大自已的影响力,在协助别人的同时不断加深自己对技术的理解程度和实践能力。而新的社区加入者也可以在与社区互动的过程中找到自已技术与精社的导师(Mentor), 正如电影黑客帝国(Matrix)中尼欧(Neo)遇到摩菲(Morpheus)。
  如果说我们生话的世界是上帝创造的,那么我们对面的这个数字的世界则是由程序员创造的。数字世界与现实世界不断地融合,使现实世界与虚拟世界的边界变得越来越模糊。在学校课堂里,陈旧的教学方法、过时的教学内容、有限的学习资源是无法与互联网上丰富的开源社区资源相比的。社区内部团队协作的自发性、自主性、可靠性也极大地提高了社区成员学习的效率,并使个体超常规成长成为可能。
  在媒体上经常看到十、三四岁的少年创造一个个软件项目的奇迹,殊不知这与国外成熟的开源社区发展息息相关。如果国内开源社区渐渐发展起来了,我们有理由相信在不久的将来,我们的周围会出现众多皮尔斯·富里曼(Pierce Freeman)这样的天才少年。
  移动互联网时代,学习是开放的更是开源的
  随着智能手机、平板电脑的普及,学校以及教室的功能将被弱化,人们可以在各种公共场所组成形式多样的学习社区。而开源社区提供多种专业技术人员以及业余爱好者面对面交流的机会。有的地方还出现了包括软件、硬件开源的创客空间。大家在无线网络环境下快速组成学习社区,分享交流最新的技术,互相协助解决各种技术问题。发现的志同道合的朋友,有的技术团队在天使投资者的支持下,在学习的过程中还可以建立创业团队。
  在企业的内部,根据企业的发展战略,也可以形成企业内部的开源社区,通过开源项目整合企业内部与外部的技术资源。开放的心态使企业以开源文化的发展为契机引领技术的潮流。
分享到:
评论

相关推荐

    基于深度学习和迁移学习的水果图像分类.pdf

    TensorFlow是一个开源的软件库,广泛应用于机器学习和深度学习的研究和开发。Inception-V3模型是一种结构复杂的深度卷积神经网络,它在图像识别领域,特别是在ImageNet大规模视觉识别挑战赛中表现出色。Softmax函数...

    java学习心得体会

    在实践中,遇到问题并解决问题的过程,是学习过程中最宝贵的财富。 再者,阅读和理解他人的代码同样重要。通过分析开源项目或Java标准库,可以了解实际应用中的最佳实践和设计模式。比如观察ArrayList和HashMap的...

    本地部署开源大模型的完整教程LangChain + Streamlit+ Llama

    GGML是一个专为机器学习设计的张量库,它仅包含C++代码,支持LLM在CPU或CPU+GPU上的运行。GGML定义了一种用于分布大型语言模型的二进制格式,并采用了量化技术,使得大型语言模型能够在消费级硬件上有效运行。 ####...

    Spring Cloud 是一个用于构建分布式系统的开源框架

    Spring Cloud 是一个为构建分布式系统的开源框架,它主要基于 Spring Boot 并提供了许多工具和服务来简化分布式系统的设计与实现。Spring Cloud 的核心价值在于它提供了一套完整的解决方案,帮助开发者轻松实现...

    VB的学习方法和教程

    Visual Basic(VB)是Microsoft开发的一种面向对象的编程语言,尤其适合初学者入门。VB的学习方法多样,包括理论学习、实践操作以及通过教程...结合理论与实践,借助各种资源,如PPT教程,定能有效地掌握VB编程技能。

    阿里机器学习算法.zip

    2. 模型调优:通过调整模型参数(如正则化项、学习率、树的深度等)寻找最优解,通常借助网格搜索、随机搜索等方法。 五、深度学习 1. 卷积神经网络(CNN):主要用于图像识别和处理,通过卷积层和池化层提取图像...

    R语言机器学习-实用案例分析(代码+数据),作者拉格哈夫.巴利,与大家分享!

    这份教程包含了丰富的代码示例和相关数据集,为学习者提供了实践和探索机器学习算法的平台。 R语言作为一种强大的统计编程环境,因其开源、易用和丰富的数据分析及可视化库而受到广大数据科学家和机器学习爱好者的...

    LeetCodet学习资料.zip

    《LeetCode学习资料详解》 LeetCode,作为一个广受...借助这份资料,你不仅可以掌握C++在解决算法问题上的应用,还能体验到开源项目的魅力,提升自我学习和协作的能力。所以,赶快打开这份资料,开始你的编程之旅吧!

    PHP,MySQL,框架学习.zip

    MySQL则是一款开源的关系型数据库管理系统,以其高效、稳定和易用性而受到开发者们的青睐。而框架则为开发者提供了结构化的开发环境,加速了应用...在学习过程中,参考在线教程、官方文档和开源项目是十分有效的途径。

    Vocabulary Teacher (linvoc)-开源

    《Vocabulary Teacher (linvoc):开源词汇学习利器》 在信息技术日益发达的今天,学习新知识的方式也在不断革新。...借助linvoc,你可以更自由、更有效地掌握任何语言的词汇,让你的语言学习之旅更加顺畅。

    E-FOTO-开源

    总的来说,E-FOTO是一个致力于教育和研究的开源摄影测量工具,它结合了自由软件的原则和自学习的教学方法,为用户提供了丰富的摄影测量功能,并借助开源社区的力量不断优化和进步。无论是对于初学者还是专业人士,E-...

    项目化学习在高中Python编程教学中的应用.pdf

    项目化学习是一种教学模式,通过组织学生...在高中Python编程教学中应用项目化学习,能够有效地提升学生的学习兴趣、动手能力和综合素质,使得学生在面对编程问题时,能够更好地进行数学建模、知识迁移和创新性应用。

    KanaQuiz-开源

    总的来说,KanaQuiz是一个灵活且适应性强的日语学习工具,借助开源的力量,它可以满足不同层次和需求的学习者。通过自定义学习资料,利用闪存卡的教育理念,以及在跨平台的Qt环境中运行,KanaQuiz为日语学习带来了...

    Orb 3D-开源

    "Orb 3D"是一个开源的3D游戏引擎,专为开发高质量的三维游戏而设计。这个引擎的开源性质意味着其源代码是公开的,允许开发者自由地查看、学习、修改和分发,促进了技术的共享与创新。通过开源社区的努力,Orb 3D不断...

    ARIA:使用MATLAB检测视网膜血管-开源

    ARIA,全称为Automated Retinal Image Analysis,是一款基于MATLAB的开源软件,专门用于视网膜血管的检测。在医疗图像分析领域,尤其是眼科疾病诊断中,对视网膜血管的精确检测至关重要,因为视网膜血管的变化往往...

    最新阿洋9.0个人发卡网全开源解密版集成了码支付和轻云支付接口网站程序.txt

    ### 最新阿洋9.0个人发卡网全开源解密版集成了码支付和轻云支付接口网站程序 #### 一、项目简介 在当前数字化经济的大背景下,发卡网...通过不断学习和实践,相信每位使用者都能找到最适合自己的运营模式和发展方向。

    北师大小学五年级语文上册语文天地六PPT学习教案.pptx

    “开源节流”这一理财原则也被引入到学习中,让学生明白,在学习中不仅要不断获取新知识(开源),也要合理安排学习时间,避免浪费(节流)。 “一箭双雕”作为一个成语,意味着一次行动能有两个收获,这在学习上...

    Alf-开源

    **Alf开源编程语言详解** Alf是一种专为教授并行编程设计的开源语言,它在编程界占据了一席之地,特别是在教育领域。Alf以其简单易懂的特性,面向...借助开源社区的力量,Alf将持续进化,为编程教育带来更多的价值。

    Python-使用numpy和tensorflow来实现这些基本ML模型和学习算法

    NumPy是Python中的科学计算库,提供了强大的多维数组对象和矩阵运算功能,而TensorFlow则是一个开源的深度学习框架,用于构建和训练复杂的计算图模型。在这篇文章中,我们将深入探讨如何利用这两个库来实现基本的...

    Java心得 学JAVA必看

    对于学习到的技术点,不仅仅要知道怎么用,还要知道为什么这么用。深入理解背后的原理,能够帮助你在遇到问题时更快找到解决方案。例如,对于Java中的垃圾回收机制,不仅要学会如何使用相关的API,还应该了解其内部...

Global site tag (gtag.js) - Google Analytics