代码之家  ›  专栏  ›  技术社区  ›  Dan Williams

为什么新手程序员似乎回避图书馆?[关闭]

  •  54
  • Dan Williams  · 技术社区  · 6 年前

    我注意到了许多新程序员提出的问题,这些问题可以使用库来解决。当一个图书馆被推荐时,他们经常会回答“我不想使用x图书馆”,这是学习曲线吗?还是?只是好奇而已!

    40 回复  |  直到 11 年前
        1
  •  107
  •   Cristian Libardo    15 年前

    许多新的程序员仍在以非常低的抽象级别工作,学习这个行业。这是每个人都必须经历的事情。可以说,“向上移动堆栈”需要一段时间。

    一旦程序员意识到他们大部分时间都花在解决与其他人已经解决的问题上,并且目标是实现“业务价值”,那么他们就可以真正地欣赏一个好的库所带来的价值。

        2
  •  34
  •   Electrons_Ahoy    15 年前

    当你还在学习一门新语言的进进出出时,同样需要学习如何使用第三方库可能看起来工作量太大。另外,库的文档记录往往很糟糕——或者至少有一些文档对于新的(ER)程序员来说是完全不透明的。

    因此,面对试图解决问题x时,说“使用库”听起来很像“先解决问题y,然后解决问题x”。

    (而且,他们的教授告诉他们不要这样做。尽管我没有学习STL,但我还是设法做到了。孩子,那是不是煮了我的面条。)

        3
  •  22
  •   Carl Manaster    15 年前

    有些人,当面对 问题,我想我知道,我会用 图书馆。现在他们有两个 问题。

    说真的-这是一个对新手来说很合理的方法,因为他们已经被新语言、编程环境、范例、击键等所淹没,对使用库的建议做出反应。如果您有一个解决方案,但它不起作用,那么有许多潜在的错误源;对它们进行排序是一个挑战。 正在添加 在他们看来,这是不合理的。

    “使用库”是指查找库、下载库、在项目中安装库,并调用必要的功能。不难,如果你习惯了(而且没有针对它的公司政策,而且你有理由相信供应商,而且库本身具有最小的依赖性,等等)。但如果这对你来说都是新的,当你问 程序设计 提问并返回 系统配置 答案是,这似乎没有帮助(即使事实上不是)。

        4
  •  17
  •   Noon Silk    15 年前

    几乎总是因为他们的教授告诉他们不能。

    有时候只是因为他们想自己学,但我想说这很少见。

        5
  •  13
  •   andandandand    15 年前

    这是学习曲线。

        6
  •  10
  •   Lotus Notes    11 年前

    使用库可能是 学习程序员 能做到。他们不是学习如何编码,而是学习如何使用其他人实现的特定API。我并不是说每一个程序员都必须理解他们使用的每一件事情,但是知道计算机的内部和外部的程序员(数字逻辑,汇编操作码等)通常比那些开始使用JavaSwing的人有优势,他们只是把图书馆放在一起。

    在生产中,这当然是另一回事。但我认为最好的教育课程至少是一次“创造一切”。自始至终编写自己的Web应用程序框架确实提高了我的编程技能和抽象能力。并不意味着如果有人雇佣我来构建一个应用程序,我会使用这个框架,但是我知道“巨人”框架使用的东西背后的优势、弱点和原因,它可以帮助我为特定情况选择一个特定的框架。

        7
  •  9
  •   Nope    15 年前

    我记得避开几个库只是因为我想看看是否能创建自己的算法。我不想放弃,让别人替我做这项工作,而是想从错误中吸取教训。一旦我想出了一个我满意的解决方案,我就去图书馆看看。

    所以对我来说,只是想看看我能不能做到。

        8
  •  8
  •   Jamie Dixon    15 年前

    我总是有这种冲动自己去做,但有时我能看到自己的局限性。 最近下载了一个库来创建PDF文档,但这几乎是我唯一能记住的时间。

    至少对我来说,(试着)自己做事情,是我的学习方式。

    我的印象是,许多新手程序员如果使用别人的ELSE库,就不会认为这是他们自己的工作。

        9
  •  7
  •   Ed S.    15 年前

    我认为这不一定是坏事。使用库是很好的;它可以节省时间、精力、错误等。但是,在这个过程中,你学到的很少,对于新的程序员来说,学习是目标。为了回答这个问题,我认为他们倾向于避开图书馆,仅仅是因为他们不习惯使用它们,也许他们不知道它们的存在。

        10
  •  7
  •   Bill K    15 年前

    对于许多文档记录不良的库,它们要么是松散实现的,要么是不允许您很好地控制包含和可见性的语言,很难猜测库应该如何使用。

    在你用了一段时间之后,你已经习惯了怪癖或者阅读其他的源代码,这些源代码教会了你正确的方法;但是在那之前,使用一个糟糕的组合/设计的库是非常令人恼火的。(甚至是一个设计得很好,但没有很好的记录)。

    如果您没有库的源代码,那么这是另一个问题——您无法控制保持程序工作的能力。如今这种情况更为罕见,但在购买图书馆的情况下仍然会发生。

        11
  •  6
  •   Jon Hopkins    15 年前

    大部分被掩盖的要点(对我来说,主要的一点是学习曲线),但我认为另一点起到了一定作用:

    因为学习一个库比自己编写相同的功能更不令人兴奋。

        12
  •  5
  •   Seth    15 年前

    更多图书馆=计费小时数更少。

        13
  •  4
  •   Craig Shearer    15 年前

    我认为有很多时间需要花在理解图书馆的目的上——是的,一个学习曲线,但更重要的是,新手程序员可能不知道他们需要什么,除非他们有更多的经验。

        14
  •  4
  •   Breton    15 年前

    因为它很有趣。

        15
  •  3
  •   Rex M    15 年前

    因为作为开发人员,成熟的一部分是学习如何快速识别问题,这些问题可以通过库或现有的解决方案解决,并且需要个人关注。

        16
  •  3
  •   MattC    15 年前

    当你试图学习如何做事情时,只要通过调用awesomeClass.doawesomeStuff()神奇地完成了某件事情,你就会放弃一部分控制权。当你是“新”的,不知道你在付出什么,或者为什么它会让人不安的时候。这是我第一次学习的时候最主要的一次撞击铁轨。很多事情都是“有效的”,我不知道为什么不挖掘大量的Rails源(我通常没有时间去做)。

    至少,这是我的看法。

        17
  •  3
  •   JCoder    15 年前

    和更有经验的开发人员一样-

    因为学习如何使用图书馆往往和编写你自己需要的那部分图书馆一样困难。至少这样,当它不能达到你所期望的效果时,你就能理解它是如何工作的。

    一个有经验的开发人员只是在理解如何使用库方面有经验,所以更容易考虑使用库。一个没有经验的开发人员,还有一件事要学…

        18
  •  3
  •   Juice    15 年前

    我是程序员,不是心理学家!:)

    那是很久很久以前的事了,但那是因为我想学习和体验。我不想用我不懂的东西,所以如果我认为我不懂这个库,我可以自己编程,我就尽量不使用它。可能也有点害怕;编程给你一种控制的感觉,而使用库就像是放弃了这个控制。

        19
  •  3
  •   m0g    14 年前

    从一个角落回答- “我不知道如何使用这些库,甚至不知道如何访问它们,也不知道它是如何工作的。”

        20
  •  2
  •   Rev316    15 年前

    库通常会带来学习一些API及其范式的开销。它可以很快变得复杂,我也可以很容易地理解,初学者更喜欢在他们的舒适区做些什么。根据我的经验,我发现大多数库和框架似乎都能很好地抽象出一些繁琐的例程,但是当我需要扩展这个功能,或者以一种非预期的方式使用它时,它可能是少数。

    我认为这是“熟能生巧”的事情之一。

        21
  •  2
  •   BigBeagle    15 年前

    嗯,新手的目的可能是解决问题,而不是实施解决方案。也许他们真正想做的是 怎样 解决问题。我的意思是,如果他们仍处于学习阶段,很可能他们不希望得到简单的答案。

        22
  •  1
  •   Perpetualcoder    15 年前

    我认为教授们希望他们坚持基本原则。当我从研究生院毕业时,我知道C++、Java和其他一些语言,但对公司中使用的库和框架一无所知。就像你知道爪哇…是的…你能写一个servlet吗?不。

        23
  •  1
  •   user161433    15 年前

    对于速度恶魔,他们很少使用第三方库,新的程序员通常希望压缩他们代码的每一次速度。我认为,如果他们无法控制自己的代码,他们就无法获得所需的性能。至少这就是我开始编程时避免使用库的原因。

    我记得我编写了我的第一个DAL程序,并避免在网上使用所有其他免费的库,因为我希望我的代码以最快的速度运行。后来,我发现通常不是代码,而是瓶颈,实际上是数据库。

        24
  •  1
  •   codingbear    15 年前

    有些开放源码库有问题,或者没有其他库那么高效。

        25
  •  1
  •   Kage    15 年前

    在我看来,另一个因素是额外的库增加了复杂性。当程序变得更复杂时,它往往更难理解,更难维护,更容易出错。我认为,特别是新的程序员之所以回避库,是因为添加库代码比添加您自己的代码增加了更多的复杂性——仅仅是因为理解库的工作方式仍然是他们无法理解的。所以这似乎是一个技能和心理学的问题。

        26
  •  1
  •   Joshua K    15 年前

    我认为更基本的问题可以被认为是阻碍使用现有的库。

    1. 作为“新手程序员”,部分原因是缺乏对图书馆的了解。如果你不知道它们的存在,你怎么知道使用它们?
    2. 可用选项数。假设我真的很想了解更多关于MVC的知识,但是如果我必须在cakephp和smarty和zend之间做出选择…好吧,你可以很快看到齿轮的工作,以发现一种方法来实现目标,而不必花时间进行试验。请看一看新生或SourceForge,以便更好地了解可用的令人生畏的图书馆选择。
    3. 有问题的支持,加上图书馆简略/过时的文档。我是否要使用此工具,它可能不再工作,也可能在将来被放弃?一个项目很可能会发展,图书馆的项目也会发展。它的有用性会持续我的项目生命周期吗,还是会要求我重新做这项工作?
        27
  •  1
  •   dsimcha    15 年前

    使用库需要您了解库的相对复杂的设计,新程序员可能还没有掌握这些设计,因为他们所写的只是简单/过程/单用途代码。例如,对于一个经验丰富的程序员来说,标准设计模式(如模板方法、观察者和命令)似乎相当明显,但对于新手来说,这一切都像是魔术和/或不必要的复杂性。对我来说,转折点是当我足够好地摸索设计模式并编写一些基本的可重用代码时。

        28
  •  1
  •   GreenMatt    15 年前

    这已经很久了,但当我从大学毕业时,我对图书馆一无所知。这是在大型机和小型计算机时代。我们的大学有一个VAX,管理人员对学生侵入系统的行为很偏执,所以甚至不允许我们看图书馆的手册。所以,当我刚从大学毕业的时候,我甚至没有想到图书馆是可用的。

        29
  •  1
  •   Ascalonian    15 年前

    我相信有很多理由让新手不想使用新的图书馆。但是,如果你有足够的时间向他们展示使用图书馆的优势,这难道不是一个好机会吗?对于与我一起工作的人,我通常会提供一个例子,说明为什么有些事情比他们的方法更好。它有助于他们作为程序员学习和成熟。

        30
  •  1
  •   Fabiano Soriani    15 年前

    碰巧 不知道就用libs 但是,当他们必须导入/添加一个文档较少的文档时,有一个 害怕未知 . 这主要发生在编译语言上!

    在解释(或编译的IRT)中,主要是 当有安慰时,这种恐惧几乎是不存在的。 ;因为您可以要求并查看它是否失败,所以调用一个方法并查看它返回的内容。

    控制台是勇敢的工具!