2018年要学习哪种编程语言,为什么呢?

如果您坚持要进入编译器的开发团队或进入“狂野的西部世界”,请随时选择和学习TIOBE的顶级编程语言 ,并在其规范水平上最好地学习。 但是严重的是,如今在该行业中,所有事情都与逻辑和结论,太多的营销和水相混淆,以至于最成功的策略是动动脑筋,并对我们过去惯用的技术价值进行明确的重新评估。 在这篇文章中,我将尝试尽可能清晰地定位那些正在开始职业生涯的开发人员,以他们在选择技术方面的风险为依据,并得出正确而又遥远的结论。

您是否成熟?


儿童对成人的理解不同于“责任”。 不幸的是,并不是所有的孩子都能按时长大,有些甚至死于尿布中。 除了一件事情,这里没有什么可怕的:程序员团队中的孩子使其他人遭受很大的苦难,尤其是在截止日期临近并且发布接近的时候:他们要么突然在开放空间中闲逛,要么在与客户代表集思广益讨论主题区域时需要安抚奶嘴。



在理解IT管理的关键原理方面,成年人与孩子不同:“编程是一种特权”。 在经验丰富且成功的同伴开发人员中,最合适的人和良好的代码编写能力可以同时“推动公司前进”。

IT行业-疯了


是的,我们是人,容易情绪激动。 但是,尽管自发明计算机以来已经过去了50多年,但到目前为止,还没有人知道如何正确编程。 没有人! 每个人都只是歇斯底里,试图吸引更多支持者加入他们的阵营,同时引诱企业自己创建项目:-)我将举一个例子来说明这一点。



大脑的速度


事实是,第一批计算机确实非常慢,非常慢并且非常昂贵。 因此,第一个程序是用很底层的语言编写的,有时是直接用机器代码编写的。 如今,有时会使用这样的“史前”技术,但这种做法是有目的的:创建操作系统及其组件(接近硬件),游戏引擎,高性能库和服务器加密货币 ,当然还用于创建编程语言

而且,即使C语言虽然漏水且对开发人员构成极大危险,但事实证明它确实不错并赢得了鉴赏家的心,那么C ++却是极其丑陋和矛盾的创作-但要做的就是生活。 也许Rust具有正确的安全内存处理思想,将会使情况变得更好,但是就语法的丑陋性和可读性而言,他似乎已经远远落后于C ++。

Golang的出现使情况进一步恶化。 一方面-伟大的肯·汤普森(Ken Thompson)的恶魔般的和弦并没有什么新意:只有Java功能的残酷残存。 另一方面,编写“相对”系统和多线程软件变得非常容易,这是许多公司都评价为:-)的事实。

在这个阵营中,您会发现大多数知识渊博的低级技术和“真正的”硬核有胡子的程序员的硬件,他们通常只学习一种编程语言,但是随后他们却选择了编译器规范而不是妻子。 确实,这个营地里有很酷的人。 而且,如果您不知道x86处理器命令在python中导致分解,那就是–羞愧与耻辱。 因此,建议-避免扎营,直到您阅读该文章的结尾。

但是硬币有另一面。 这里的项目不仅进行了很长时间,而且……已经进行了数十年 。 低级编程语言没有帮助,反而会干扰。 违反内存的行为一直在发生,需要成千上万的测试人员(或者您可以将其放在github上,我们将进行集体测试),以及成千上万的单元测试和其他类型的测试,才能使其脱颖而出 。 在项目开始时加入团队的许多开发人员都不愿看到版本的发布和死亡,这使Beta测试人员无法呼吸。 但是这些勇敢的人,在从眼中流血,在污名出现之前,千方百计…… 杰作诞生了。



脑架构与企业


因为 尚无人知道如何正确编程,“胜任设计和可靠性”方法是自然选择形成的。 您疯狂地使用允许通过指针进行不安全的内存操作的语言进行编程-您还可以带给世界启示:“核反应堆软件中的分段故障”。 在不支持强语言输入的情况下,如何开始做一个项目? 他们提出了下一种正确的编程语言:Java和C#。 但是在Java中,他们忘记了空值的危险,而在C#中,他们没有完全考虑向后兼容性。 结果是一个庞大的公司,相对安全和相对向后兼容的世界。 在这个世界上,目标是通过每天的代码行(通常不超过几十个,因为手指被沾满鲜血)和有关设计模式的厚厚的哲学和宗教书籍来衡量的,哦,是的,我几乎忘记了埋葬自己,项目,客户和环境的方式让世界沉浸在代码中并淹没在代码中,并怀念着痛苦,回想起20层继承体系-关于OOP 。 该营地的主要座右铭之一是“为什么要在可能的情况下简单地做到………………………………………………………………………………………………………………………………”。 此外,他们中的一些人可以快速,优雅地写作,每天早晨用鲜血洗手,并在头脑中收集项目结构,同时查看3台显示器。 但是有些人上瘾了,以至于他们继续在无穷无尽的层次结构内创建层次结构的层次-目标早已丢失,眼睛继续灼热,手痒。

实际上,在主题区域安定下来并适合“它们之间具有状态和消息的对象”的区域中,类似的方法非常有效。



当存在“严格的”(引号,因为接下来关于haskell会发生什么)静态类型(这是事先知道实体类型,它们由编译器检查并且您不能在数字中添加字符串)时,尤其令人愉悦,在重构和改进代码时轻松自如。更不用说优质的开发环境了 。 这个阵营的同事经常受过软件体系结构的教育,读了很多书(入门门槛很高),了解众多平台库的功能,设计模式,编写大量文档和创建自动化测试的技术,测试了这些测试,并且可以编写几个月的模拟程序,结果证明不必要的。 再次-项目通常由大型团队进行很长时间的建立和启动,需要大量的测试人员,但是错误的性质比致命的程度要低一个数量级,这会激发灵感。 进入企业发展的这个“领域”非常困难。 如果您演示如何用PHP解决5位Java同事将在5天之内解决的问题,您将被微波炉烧死:-)

脑可靠性


在学术环境中,创建了另一个阵营,非常有趣,建议您进行理解,以供理解,并提供了一组函数式编程语言(Lisp,Haskell,Erlang和其他语言)。 您为使用变量和循环编程感到疯狂吗?您还会犯很多错误! 程序是一组函数调用,而不是循环,请使用递归,先生们! 哎呀? 不,没有听说过-类型类和代数数据类型。 您不了解应用函子 ,也没有深入研究类别理论-是的,您不会发展自己的大脑,我的朋友。

实际上,我认为,要进入这个阵营并了解其价值,就需要真正地动脑筋-因为数学将充满一片大海,甚至还有更多意想不到但美丽的概念。 在该团队中获得的经验将是无价的,并且在与其他编程语言一起使用时会派上用场。 他们说有时有人在实际项目中使用函数式语言:编译器, 加密货币 -毫无疑问,您的项目将比编译器捕获的逻辑错误少几个数量级,当然,Haskell中的代码简短,清晰和简洁会令人惊讶-但在“在响亮的人!”时代 学习和理解这种美越来越少。



“大脑”的结果和有效性


兄弟,架构与面向对象开发陷入困境! 克苏鲁爱你, 鸭子打字是成功的关键! 强打字? 谁在他们的头脑中将字符串分配给数字? 静态类型和编译是浪费时间,因为代码只编写一次,并且如果您没有时间编写要发布的代码,那么它将被丢弃(甚至被丢弃,但要等一会儿)。 重构? 写正确:-)封装? 在变量名称和所有内容之前加一个破折号。 OOP是不必要的重新定向。 到底是什么F5,您会看到结果。 设计模式-不,您还没有听说过:我们的脚本就是全部...您想要一些杂草吗?

最有趣的是,当您深入研究具有动态类型的语言(在python中是严格的,在php和javascript中是非严格的)时,您的眼睛逐渐睁开,看到事物的真实面貌,因为:

  • 代码变得非常简洁明了,无需增加20个类(如果它不涉及系统库)
  • 您可以通过REPL快速检查想法
  • 语言很简单,通常是简约的,包含必要且功能强大的原语(列表,字典),最重要的是,它们适合您的大脑!
  • 有很多图书馆,您总是可以在5行中解决任何问题

并通过重构实现了它:-)生活变得更有趣了(我希望支持我的代码的开发人员不会知道我的住所)。 在这个营地中,您经常会遇到许多完全不同的专业开朗的人,除了“汇编程序编程”,他们能够非常迅速而有效地解决5行问题,并能长期成功地支持代码和Web项目。

看看这个营地的最新趋势,让自己充满幸福的哲学。 浏览器中一个简单易懂的编程环境,那么 ,什么会更性感呢?



现在,在node.js上建立一个无阻塞的Web服务器并在10行中提供成千上万个连接的过程有多么容易,而社区也在飞速发展呢?

而且没有“ Eclipse XML Sont Entiny bean企业OOP ...”-json和csv以及微笑(以及未知植物的气味)。 并将代码读取并放置在大脑中,因此它可以快乐而长时间地工作,并且可以轻松保持多年。

事实证明,“这种方式”也可以成功地编程,并且在“工业编程语言”上度过的岁月是徒劳的(但手指变得更坚强)。

技术选择


你感到震惊吗? 我也是 想象一下,客户为选择业务实施技术而感到惊讶! :-)

我认为您目前非常了解IT世界真的发疯了,迷路了(开玩笑)。 一些编程语言,例如Scala,正试图坐在所有椅子上,但它们仍然没有真正成功-代码变得越来越难以理解。 但是严重的是,编程范式的竞争只会加剧,因为……项目中的任务完全不同,这与您需要“跳舞”的任务不同! 在一个固定的域(服务器,库)中, 标称键入 (C ++,Java,C#...)更好,而在结构化键入 (Golang,Haskell ...),Web脚本或机器任务中, 标称键入会更好学习会带给鸭子真正的幸福(python,php,javascript ...)。 不必认为静态类型 (尤其是严格类型 )直接是“必须具备的”,否则您将无法按时完成任务,并且对“可能的错误”充满疑惑的代码将丢到垃圾桶中。 在网络,脚本编制和机器学习中,您可以放心地以惊人的速度前进,并通过动态鸭子输入以及带有大量漂亮而强大的库的 php和python 这是一个很好的例子。

因此,别管“在2018年学习什么编程语言”到地狱:

  • 了解编程范例(OOP可以是一个坟墓,或者可以为您节省一个项目)
  • 了解打字的精妙之处以及与之相关的风险和机会(您可以诅咒金融图书馆中的动态打字,或者您可以牺牲Java程序员给Cthulhu并在脚本中的100行上重写他的100个类,即使对于孩子也可以理解)
  • 从直觉的角度,了解算法(您需要区分搜索和排序,以及逻辑回归的神经网络-并进一步了解,您必须学习...一生,但这是值得的)
  • 理解经验丰富的开发人员(尽管没人知道在市场上找到他们的位置)将使用几乎任何技术(甚至是脑力激荡)按时实施该项目并做得很好,但是经验不足的开发人员将不得不选择一种最舒适的进入和崩溃风险编程语言仍然很棒

接下来,选择您感兴趣的任务领域,例如Web或机器学习,以及:

  • 看看人们如何解决这些问题
  • 根据上述标准分散每种工具的风险和机会
  • 用1-3种特定工具坐几个周末,但决不能达到狂热或规格
  • 更快地开展业务并获得实践中使用工具的经验-这是最重要的事情
  • 您不需要完全学习编程语言-最好以10到15行的5种最受欢迎​​的工具来学习如何解决问题,实际上您将以一种非常适当的方式行事!

案例研究-ML


假设您对机器学习感兴趣...恭喜! 一方面,有一种学术理论-但是您必须根据统计数据和线性代数从中汲取精髓,并且在任何情况下都不应参加为期数月的课程(去吧,相信我,如果您不是数学家,而是人文主义者,那就疯了-这对您自己来说是不可感知的) 另一方面,您需要学习如何快速编写有用的代码并解决5-15行中的问题。 是的,您可以在10,000年内用C语言编写所有内容,因此您可以查看同事的经验并正确选择python,其中有很多与此主题相关的库和现成的解决方案。 您花了几天的时间来研究python-在那儿没有什么可学的了,语言非常简单(我们同意不要爬到野外,因为时间就是金钱)。

此外,请阅读有关numpy,熊猫,scikit-learn的内容,如果您的眼睛是直的,那么Keras会继续进行项目。 但是您可以采取另一种方式,即漫长而艰难的方式,并导致人为圣洁和社会贫困(三年后您将了解算法的本质,在电动火车上出售报纸,但这也许是一种特殊的方式)-自己开始实现算法,并进行手动内存管理,或实施更重的解决方案并深入研究代码数月。 错误的工具-导致不眠之夜和浪费时间的关键-不能以各种方式避免复杂性。

错误选择的工具,即使是最受欢迎的工具,甚至是免费赠送的礼物,即使从理论上讲,从长远来看可以处理所有事情,都可能因未能按时完成所有项目而破坏您的项目。 您可以也不能最大限度地降低这种风险。

结论


总的来说,我的朋友们,我们确保没有人知道如何正确,成功地编程,即使我们是开发人员:-)编程范式和技术的竞争越来越激烈,头脑正在膨胀,空闲时间越来越少。 因此,开发人员开始其职业生涯最成功的策略是喝一罐凉爽的啤酒,放松身心并:

  • 避免黏附和浸入过多的技术部件中,这些部件的数量呈指数增长
  • 选择您感兴趣的解决客户问题的有趣领域
  • 学习从工具和编程语言中提取简短的色情内容
  • 编写尽可能少的代码,但是对您和您周围的人来说清晰易懂
  • 学习以5-15行而不是20-50课解决问题
  • 如果您想去其他地方,则可以通过tcp / ip使其成为数学,haskell或RFC等基础知识
  • 喜欢编程,并用它温暖您的同事!



永远记住,时间,尤其是业余时间,是宝贵的资源,它取决于我们在何处进行投资。 祝大家好运,心情愉快!

Source: https://habr.com/ru/post/zh-CN417397/


All Articles