跳转到主要内容
Chinese, Simplified

我开始编码时不知道的事情。

 

我们会说这么多语言,但我们会用多少种语言编写代码?
很难选择一种需求量很大并将继续存在的编程语言——这也是一种高薪水,
选择一个并不总是那么容易,永远不会,
选择最好的编程语言(生活中也是如此)总会有一些取舍,
考虑到这一点,


最好的选择是决定你想住在哪里,你的收入是多少,以及你感兴趣的领域。
然后,查看 Indeed、Ziprecruiter、Dice、Naukri.com 和其他网站,以确定流行的语言。然后,关注前 2 或 3 名。您可以选择另一种引起注意的语言(即 Rust 或 Go)并聪明地谈论它。也许,添加你的“爱好”语言。准备好解释你为什么使用它并觉得它很有趣。 ~查尔斯·斯塔克


因为没有一种编程语言是完美的!

 


一个很容易学习,但有时很慢(Python),
一个非常快但有点难学(C++),
一个是冗长但有需求的(Java),
一个很有前途但用例有限(Go),
一个无处不在,但没有人谈论它(PHP)
一个无处不在,但就业市场饱和(JavaScript)等等……


“语言需要炒作才能生存;我只是希望人们不必被它蒙蔽。”


你有感觉,对吧?

美国、英国和其他第一世界和一些第二世界

我可以详细分析您应该更喜欢哪种语言,但互联网上充斥着它们,所以这里有一个简短而清晰的概述。
这篇文章是我个人的看法。 每种语言都很好,只是你,开发者,如何使用它。
除非另有说明,否则在任何编写 Javascript 的地方都可以考虑使用 Typescript。
你可能不会完成这篇文章。 事实上,我可能已经让你失去了浏览器中的另一个选项卡。 或者你老板的电子邮件。 或者来自同事的 ping。 或者任何数量的其他数字干扰来定义您的现代生活。


[以下建议适用于美国、英国和其他第一世界和一些第二世界(俄罗斯和邻国等)国家。 向下滚动以查看印度和中国的上下文。]

你应该学习

 

  1. Typescript - 最常用、多功能、简单、大型开发人员社区和 WORA(一次编写,随处运行)、脚本、前端、后端、ML(注意它的依赖地狱)。
  2. Python — 易于学习、应用广泛(后端、机器学习、数据科学、可视化、脚本、黑客),采用率持续增长。
  3. Kotlin/Swift — 多功能,简化现有的原生应用程序开发。
  4. C# — 平台无关、简单、通用的语言,可用于开发任何类型的应用程序、游戏开发、VR、AR。
  5. Go — 解决可扩展性问题、简单优雅的代码、易于学习、云语言、DevOps、后端、服务器。


你应该考虑

 

  1. Java — 大数据,全球需求量很大,企业之王,Apache Kafka、spark、hive 等行业标准工具的核心语言。
  2. R — 统计、机器学习、数据可视化,缓慢且数据密集。
  3. Dart — 适用于 Android、iOS、Web 应用、桌面/笔记本电脑程序、Linux 程序的嵌入式代码库。扑。
  4. Rust — 内存管理、Linux 内核、最高薪水。

你不应该考虑

 

  1. Ruby——现在有更好的工具可用。 (旁注:Github、Gitlab 都是用 Ruby on Rails 框架编写的,仍然是许多初创公司轻松 MVP 和快速部署的首选)
  2. PHP - 缺乏良好的调试工具(与其他语言相比),工资相对较低,仍然广泛流行,来自 python 的激烈竞争。 [早期版本的 PHP 不太关注安全功能,目前,它与任何其他语言一样强大]
  3. C++ — 桥接 b/w LLP 和 HLP、内存不安全、游戏引擎开发、操作系统级别、嵌入式、金融科技、交易。

没有健康社区的超新且非常特定于小众的语言。[有关更多信息,请参阅文章末尾]
[编辑:2022 年 1 月 17 日:在与行业开发人员考虑后,Java 被提升为“您应该考虑”部分。 ]

对于印度语境

 

  • Java — 印度就业市场最受欢迎的语言,安全的赌注。
  • Javascript 或 Python — 掌握任何人,你就可以开始了。 时期。
  • C++ — 将其用于数据结构和算法以及竞争性编程(在 Codeforces、Codechef、Topcoder、SPOJ 等,并参加 Hashcode、Kickstarter、codejam、Hacker Cup、ACM ICPC 等)

推荐:Java 和 Javascript


中国语境

  1. Java [29.28%]
  2. C++ [16.08%]
  3. Javascript [15.09%]
  4. C# [10.95%]
  5. Python [8.21%]
  6. Go [6.94%]
  7. PHP [5.19%]
  8. Matlab [1.48%]
  9. Lua [1.28%]
  10. Swift [0.83%]


来源,[xx%] 表示每 100 名开发人员使用该语言的开发人员百分比。


所有的编程语言都是为某些特定目的而构建的,随着时间的推移,它们会转向通用语言(可用于编码几乎所有东西,例如 Javascript、Java 和某种程度上的 Python)。
以下是某些语言的分类,看看,

基于不同的编程范式


面向对象的编程语言


Java、C++、C#、Python、Javascript。


过程编程语言


BASIC、C、帕斯卡、FORTRAN、围棋


函数式编程语言

 


Haskell、SML、Scala、F#、ML、Scheme、R、JavaScript、Elixir、ReasonML、OCaml


脚本编程语言

 

  • 服务器端脚本语言:Javascript、PHP、Python 和 Go。
  • 客户端脚本语言:Javascript、Web Assembly。
  • 系统管理:BASH、PERL、Python。
  • Linux 接口:BASH


逻辑编程语言


PROLOG、ASAP(答案集编程)、Datalog 和 Coq。


标记语言


HTML、XHTML、RTF、TeX、LaTeX、Markdown、YAML、XML
“学习一门面向对象的编程语言和一门脚本编程语言。”

基于运行时差异


动态类型语言


Python、JavaScript、Ruby、PHP、Erlang、Perl、Lua。


静态类型语言


C、C++、Java、Typescript、Go、Haskell、Kotlin、Rust、Scala、Swift、OCaml、


“JavaScript 是一种动态类型的语言,但 TypeScript 是一种静态类型的语言”

language

  • 强类型语言和弱类型语言 || 动态和静态类型语言。

静态和动态(渐进式打字)


Dart, C#, Clojure


开源语言编译器


C(gcc), C++(g++), C#(.NET, 曾经关闭), Java(JVM), Python(PVM), Go, Kotlin(JVM), Julia, R, Scala, Dart, Swift, Free Pascal 编译器(FPC,使用 Lazarus IDE)几乎所有著名的语言。


封闭源语言编译器


Matlab、MSVC++、ABAP、SAS、Delphi、VBScript、Microfocus COBOL、LabVIEW、IDL、PL/SQL


“编程语言本身不是开源或闭源的。 它的编译器和运行时库可以是闭源的。”

  • 自动垃圾收集——ML、Haskell、Lisp、APL、Ruby、Julia、Javascript、Smalltalk、Java、C#、Python、Go
  • 手动垃圾收集——C、C++、Rust。
  • Swift 和 Objective-C 有可选的垃圾回收,

基于应用


用于移动应用程序开发

 

  • 原生平台——Java 或 Kotlin (Android Studio)、Swift 或 Objective C(Xcode,适用于 iOS 和 macOS)
  • 跨平台——Dart(用于 Flutter)、Javascript(用于 React Native 和 Ionic)、C#(Xamarin)。


网页开发

 

  • 前端——Javascript(React、Angular、Vue、preact)、Elm、ReasonML
  • 后端——Javascript (Node.js), Python (flask, django), Go (gin, gorilla), Ruby(Ruby on rails), Java(Spring Boot), C#(.NET framework)
  • DevOps——Go、Python、Bash

“你知道 React 最初是用 OCaml 编写的,然后才被移植到 JavaScript 以帮助采用吗?”


Elm 和 ReasonML 是功能性的、编译为 js 的语言。


用于游戏开发


C++(Unreal engine, 4A engine), C#(Unity, CryEngine), Java(LibGdx, Ardor3D), Javascript(A-Frame (VR), ImpactJS), LUA(Leadwerks)


用于桌面应用程序/软件开发(Windows/Mac/Linux)


C#(.NET 框架)、Delphi、Dart(Flutter)、Swift(XCode)、C++(Qt)、Python(Kivy、Tkinter)


面向 AR/VR/元界开发者


C++、C#、Java、Javascript(AR.js)、Python(VRED)、Solidity(Metamask)、Rust、Swift(ARKit)


对于系统编程


Go, C, C++, Rust, Erlang


对于人工智能/机器学习


Python(Tensorflow、Keras)、LISP(CUDA SDK)、Javascript(Tensorflow.js、brain.js)、Swift(Core ML)


对于数据科学和分析


Python(Scrapy,Pandas),R(ggplot2,dplyr),Julia(Flux,Mocha.jl)


对于大数据


Java(Apache Hadoop、Hive、Storm)、Scala(Apache Spark、Kafka)


网络安全


Python, Bash, PHP


其他

 

  • 汽车行业——C/C++
  • 医疗保健——Python
  • 市场营销——SQL
  • 科学——MATLAB
  • 嵌入式系统——C/C++
  • Linux 编程(内核)——C、Rust
  • 云和 Web API — Go、Elixir(Phoenix、ecto)
  • 金融——F#

“在我告诉你我的一些建议之前,请先在编程语言中考虑这些事情,”

 

  1. 类型系统(静态还是动态?)
  2. 学习努力(初学者可以接受吗?)
  3. 空值(为什么空引用不好?)
  4. 错误处理(捕获异常是处理错误的坏方法?)
  5. 并发(处理器不会变得更快,利用多核计算)
    1. — Go/Erlang/Elixir
  6. 不变性(它是不会改变的数据)
  7. 生态系统/工具(好的库可以节省数月的开发工作量)
    1. — JavaScript 和 Python
  8. 速度(语言编译速度有多快?)
    1. FAST — Go、Rust、Elixir ← | → 慢——Scala、Python、C++
  9. 年龄(通常,较新的语言会比旧的更好)
  10. 你不应该担心语言性能——这是一个过早的优化。
  11. 程序员的时间非常昂贵,所以选择一种能够充分利用程序员时间的语言。

可能要学习的组合:-

 

  • Javascript 和 Java
  • Python 和 C++
  • Go 和 C#

或 LHS 和 RHS 的任何其他组合。
我为自己选择了 Javascript、C++ 和 Go。
不要忘记学习 SQL 或任何类型的 NoSQL 语言。 (任何 1 个)


“SQL 是软件行业的无名英雄。”


注意:选择一种语言并在假设它将成为计算的未来的基础上全力以赴只不过是过早的优化。不要落入这个陷阱。
你知道 Go 有最好的语言国歌吗?


基于 StackOverflow 趋势

language

language

Python, C#, Javascript, Java, PHP← Stackoverflow trends →R, Swift, Ruby, Dart, Kotlin, Go, Rust

基于Google 趋势

language

language

Java、Javascript、Python、PHP、C# ← Google 趋势 → Dart、Go、Kotlin、Rust、Swift
同样,这些趋势并不能准确定义就业市场或行业趋势。 您甚至可以在几乎看不到使用的 COBOL 中获得出色的编码工作。

language

语言的控制/性能与安全性


如果它脱颖而出,为什么不是 Rust(或 Go)?


— Rust 很棒,受到许多人的喜爱,现代但特定于利基市场。 它不是像 Python 和 Javascript 那样的通用语言,你仍然可以找到一份好工作,但我不建议将 Rust 作为某人的第一语言或他们学习的语言,以希望快速找到一份好工作。 Rust 是一种内存管理至关重要的系统语言。
这就是为什么越来越多的程序员采用其他更现代的语言的原因——顶级玩家是 Julia、Go 和 Rust。 Julia 非常适合数学和技术任务,而 Go 非常适合模块化程序,我们的 Rust 是系统编程的首选。


先说工资:

language

language

2021 ← | → 2020
薪资趋势可能会产生误导,因此不要根据该语言的开发人员一年的收入来确定该语言的优势。

关于流行编程语言的一点历史不是必需的,但很高兴知道。

 

1951 — Regional Assembly Language
1957 — FORTRAN (first compiler)
1958 — LISP
1958 — ALGOL 58
1959 — COBOL
1962 - Simula
1964 — BASIC
1969 — B (forerunner to C)
1970 — Pascal
1972 — C
1972 - Smalltalk
1976 - S
1978 — SQL
1980 — C++ (as C with classes, renamed in 1983)
1984 — MATLAB
1986 — Objective-C
1986 — Erlang
1987 — Perl
1990 — Haskell
1990 — Python
1991 — Visual Basic
1993 — R (influenced by S, 1976)
1995 - Delphi
1995 — Ruby
1995 — Java
1995 — JavaScript
1995 — PHP
2001 — C#
2002 — Scratch
2003 — Scala
2006 — PowerShell
2007 — Clojure
2008 — Nim
2010 — Rust
2011 — Elixir
2012 — JuliaOther new programming languages include Red, Crystal, Elm, Hack, Haxe, Zig, Reason, and Ballerina.

“C 是最接近模拟计算机工作方式的语言,Lisp 是最接近模拟计算工作方式的语言。”


与此同时,回到地球上……当你忙于生活时,这些科技巨头创造了一些很酷的编程语言!

 

GOOGLE
2009 — Go
2011 — Dart
2011 — Kotlin (developed by JetBrains, supported by Google)
MICROSOFT:
2012 — P
2012 — TypeScript
2017 — Q#
2019 — Bosque
2021 — Microsoft Power Fx
OTHERS:
2014 — Hack — Facebook
2014 — Swift — Apple Inc.

科技巨头开发语言主要是为了解决自己的问题(而不是为了慈善),有些甚至直接复制市场上已经流行的另一种语言(微软复制 Java 来制作 C#,而且 Bosque 与谷歌的 Go 非常相似)。
你可能听说过每个人都说只掌握一门语言,这是真的,但通常只有少数人遵循这个建议,我们其他人则从一种流行技术跳到另一种。
语言发展缓慢,因为它们不是真正的技术。语言是符号。
掌握一种语言意味着了解 API 的构建方式或该语言专门针对的任何其他用例、如何发送不同类型的请求(GET、POST)、并发和并行性相关功能、内存管理方式、优化方式用于性能的中间程序集或字节码以及诸如类、对象等之类的东西。这些东西在编程语言之间几乎没有区别。
例如——Go 和 Java 在这方面非常相似。


密切关注技术:—

  • Web Assembly (WASM)
  • Elixir
  • Flutter


为了解决我写这篇文章时受到的一些批评。


亲爱的读者, 以 Java 开发 App 为例。
用 Java 开发一个中等规模的应用程序需要 3 个月的时间。
在 Kotlin 中制作相同的应用程序需要 1.5 个月。
使用 Dart 在 Flutter 中开发相同的应用程序只需不到一个月的时间。
你会选择什么? 3个都是一样的。你会坚持使用 Java 吗?我希望不是。
我写这篇文章只是为了在新技术更好、更快、更高效时拥抱变化,为什么不选择它们呢?


编程界流行的一句话——

 

  1. C++ STL 的发明者公开表示他讨厌 OOP。
  2. Java 是自 MS-DOS 以来发生在计算领域最令人痛苦的事情。
    1. — Alan Kay,面向对象编程的发明者。
  3. C++ 是一门可怕的语言……将你的项目限制为 C 意味着人们不会用任何愚蠢的“对象模型”c&@p 搞砸事情。
    1. — Linux 的创造者 Linus Torvalds。
  4. 我发明了面向对象这个术语,我可以告诉你我并没有想到 C++。
    1. — Alan Kay,面向对象编程的发明者。
  5. 使用受 OOP 影响的编程语言,计算机软件变得更加冗长、可读性降低、描述性降低,并且更难修改和维护。
    1. — 理查德·曼斯菲尔德
  6. 我认为,当您构建这个由可变对象组成的大型对象图时,大型面向对象程序会面临越来越复杂的问题。你知道,试着理解并记住调用方法时会发生什么以及副作用是什么。
    1. — Rich Hickey,Clojure 的创建者。
  7. 在 C++ 中,我们不会说“缺少星号”,而是说
    1. “错误 C2664:'void std:vector<block,std: allocator<_Ty>>:push.back(const block &)': 无法从 'std:: Vector iterator<std: Vector val<std:: 转换参数 1 Simple_types <block>>>' to 'block &&'”
    2. 我认为那很漂亮。
  8. 很抱歉,我很久以前就为这个话题创造了“对象”这个词,因为它让很多人专注于次要的想法。重要的想法是消息传递。
    1. — Alan Kay,OOP 的发明者
  9. 我认为缺乏可重用性来自于面向对象的语言,而不是函数式语言。因为面向对象语言的问题在于,它们拥有随身携带的所有这些隐式环境。你想要一根香蕉,但你得到的是一只拿着香蕉和整个丛林的大猩猩。
    1. ——乔·阿姆斯特朗,Erlang 的创造者
  10. 几年前,James Gosling(Java)甚至说,如果他必须重新做一遍,他就不会使用接口了。
  11. React 不是为 TypeScript 制作的。 React 最初是为函数式语言而设计的。
    1. 编程范式之间存在冲突——
    2. TypeScript 是 OOP 优先的,而 React 是功能优先的。
    3. React 期望它的 props(即函数参数)是不可变的,而 TypeScript 没有对不可变数据结构的适当内置支持。

最后,问你一个问题。


“美国科技公司希望政府让移民更容易,因为他们说他们在美国找不到足够的程序员。


反移民人士说,与其让外国人接手这些工作,不如培养更多美国人成为程序员。谁是对的?”


请在评论中回答。
我希望你在阅读这篇文章时玩得愉快。

原文:https://zriyansh.medium.com/programming-languages-to-avoid-and-learn-in…

本文:https://jiagoushi.pro/node/1852/

Article
知识星球
 
微信公众号
 
视频号