需要满足以下五条要求 1 支持多范式编程,表达能力强大 2 充分隐藏计算机体系结构的细节,特别是内存管理等等的细节 3 生态丰富,有大量的工具和库 4 语法设计现代,代码较为简洁,开发效率高 5 具有先进的 完善的工具链支持 比如 编译器 IDE 调试工具 运行监测工具之类
目前备选 python java C# js php groovy ruby swift perl kotlin scala
请大家帮我做做排除法 或者分析一下 n 这些语言不符合上面哪些要 如果没十全十美的 或许可以矬子里拔将军 最后我能选出一个
101
vhysug01 2021-12-22 21:38:20 +08:00
lisp+python 完成新版 SICP 作业
|
102
CommandZi 2021-12-22 21:43:46 +08:00
Swift
|
103
fyxtc 2021-12-22 22:01:26 +08:00
没必要专门研究锤子,更多的时间拿来用锤子实践做不同的事才是更好的选择
|
104
KrisChan 2021-12-22 22:16:44 +08:00
钓鱼么?
为什么要带有立场的学习呢? 不同语言都有不同的适用场景,你提到的这些要求,多数你去调研一下社区,看看官方的 tutorial ,不就可以得到一些初步的结论了么? 你的所谓“钻研”是指什么呢,是对语言本身的研究,最终在编程语言的顶级会议上发 paper 么?还是用这门语言做一些工业级的项目呢?可能不同的目标会影响你的行为吧。 |
105
L4Linux 2021-12-22 22:17:29 +08:00
Common Lisp/Emacs Lisp
|
106
Ayanokouji 2021-12-22 22:19:38 +08:00
Swift 的语法很棒,但是在服务器端的进展太慢,kotlin 的语法大量借鉴 swift ,可以使用 java 全部生态,编译速度也还可以,另外还支持 js 、native (虽然还不咋滴),最近还更新了 Compose Multiplatform 支持桌面和 web ,而且 kt 有 java 基础学习也挺快的
|
107
EscYezi 2021-12-22 22:32:21 +08:00 via iPhone
首先排除繁琐的 java 和简陋的 golang ,kotlin 全部都符合
|
108
ecnelises 2021-12-22 22:39:05 +08:00 16
这么多楼好像都只说了一种语言,有些语言甚至都没提到。聊点个人看法。
Python ====== 算是很多非职业程序员会学习的编程语言,在脚本语言这行里发迹比较早,所以很多 Linux 发行版都会有它。语法中规中矩,除了缩进表示代码层级这点有争议,语言上其他没有让人很恶心的地方,也没有什么难以割舍。Python 比较常用的领域有 C++项目的构建系统、人工智能、若干系统维护的工作,还有一些 Web 项目会用 Python 做。比较大的优点是容易找到有 Python 的环境以及至少会点 Python 的人。 Java ====== 用「永远的神」来形容 Java 是没什么问题的。几十年的生态积累非常庞大,如果用它做项目也几乎不用担心招不到人这个问题。Spring 等框架过于复杂,还有 Java 做的桌面程序性能不佳等毛病,让大家对 Java 印象不太好。不过连 Golang 都可以有泛型,那 Java 自然也是可以现代化的。也算是和 Python 挺像,在各自的领域里中规中矩,如果真的不知道选什么,那选它不会有啥大错。多年来许多人觉得 Java 和 C++是竞争对手,至少在今天事实并非如此,它们的优点几乎不重合。 C♯ ====== 最早是以 Better Java 的形象出道的,时至今日似乎已经走出一条自己的路。曾经有个笑话,说 C♯为什么没有 Spring 这种框架,答案是因为微软没有春天。还有个笑话是说 Java 程序员都戴眼睛,因为他们 can’t see sharp 。这俩笑话其实反映出 C♯的特点,就是语言特性远比 Java 丰富,写起来更爽,但生态不够好,招人更难。如果单纯为学习目的,C♯很值得了解,毕竟其父是 Anders Hejlsberg ,编译器领域上古大佬。 JavaScript ====== 一说是披着 Java 语法皮的 Lisp ,几乎绕不开的语言。早年乏善可陈,除了原型继承和对象模型和其他语言差异较大值得了解。因为赶上好时代,一方面性能在各家军备竞赛下彻底高出其他脚本语言一个档次,另一方面各种语言变种层出不穷试图弥补其语言缺陷。到今天算是强大的现代语言,还自带可能是地球上最丰富的库和工具生态( Java 人家至少没什么人天天想着拿 AST 搞事)。不是你想不想学的问题,时至今日做开发没法绕过它,而且在几乎所有主流平台上都能找到自带的 JavaScript 运行时。这个圈子的程序员一个比一个能整活,人称码农娱乐圈。 PHP ====== 「最好的语言」,最早就是一个能编程的模版引擎,Web 领域干简单的活没人比它更快,LAMP 这个缩写简直是一个时代的回忆。后来 PHP 也加了很多东西,包括模仿 Rails 的 Laravel 以及 Swoole ,不过不妨碍大家还是按照它曾经的定位玩。语言方面可以玩的不算多。 Ruby ====== 这个在国内算是大冷门吧,不过是我最喜欢的语言之一。Ruby 和 JavaScript 有点像同父异母从小分家的两兄弟,都被人说是批皮的 Lisp 。Ruby 有 Perl 风格的简洁操作、完整的面向对象和函数式能力。高度的动态性使得它表达能力非常强,参考 Sinatra 这样的微型 Web 框架。到 2021 年,Ruby on Rails 依然是 Web 开发领域的最强生产力,这么多年在这块也积累下了不少生态。此前被诟病的几个缺点(没有 JIT 、没有静态类型检查工具、缺少完善方便的异步 I/O )从 3.0 开始也在被一个个解决。问题是会的人不多,但非常值得个人学习 /写个人项目。 Perl ====== 当年骆驼书没看多少页就弃坑了。在类 UNIX 系统上 Perl 可能比 Python 更常见,处理字符串和正则的语法非常简洁强大,以至于有人说这个语言是 Write-only 的,就是写一次以后自己就看不懂了。如今应该只有一些历史悠久的系统里能看到 Perl 的大量使用(新项目里取而代之的往往是 Python )。Perl 6 做了很多年,除了那个极其鬼畜的 Logo 外,好像很少听说新消息。如果能接受 Perl 的奇葩语法,学一学也是挺有意思的。 Scala ====== 对 Scala 了解不多,不多扯淡了。主要印象就是把函数式编程和面向对象缝得比较好,类型系统比主流这些语言强。还有就是因为跑在 JVM 上,所以也能受益于 Java 生态。作者 Martin Odersky 也是编程语言和编译器大佬。没接触过这类语言的话,学学 Scala 应该能开眼界。 Swift ====== 大家都知道 Swift 背后是宇宙市值最高公司苹果。但 Swift 算是成也苹果败也苹果。2014 年 Swift 发布,2015 年开源,基本和 Rust 1.0 同一个时间,也都基于 LLVM ,如今两者在 GitHub 的 star 数也差不多。但就业界前景而言,Swift 和 Rust 看起来越差越远。Swift 的核心团队和 LLVM/Clang 相当重合,所以无论是编译器实现还是语言设计,Swift 都有不少出彩之处(更何况极不尊重兼容性的苹果在 Swift 早期,每年都要对语言进行大量破坏性修改,被人调侃一年一个新语言,直到 Swift 4 语言核心才基本稳定,好处就是很多坑被扔掉了),比如多范式的异常处理,算是众多语言里比较之下相当舒适的。如果说 Golang 是所谓的大道至简;那么 Swift 奉行的就是兼容并包,拥有主流编程语言里最多的关键字,最新版加入了 async/await/actor ,接下来的 6.0 还会加入所有权机制,更远还有和 C++的无缝互操作。Swift 社区一直有更远大的理想,比如进军服务端。但终究还是要为苹果的生态服务。Swift 就像班级里那个门门功课考 80 ,每周还有半天缺课(指兼容 Objective-C )的学生,自然不如那些一些科目满分,另一些不及格的学生引老师注意。BTW ,Swift 的编译器是 C++写的,在这些编译型语言里,算是少数没有自举的。 Kotlin 和 Groovy 了解不多。从 Compose 这个项目就能看出,Kotlin 也充满野心,除了 JVM ,也能编译到 Native 和 JavaScript. Kotlin 、C♯和 Swift 像是奇特的结拜三兄弟,不怕 Feature 多,就怕糖不够甜,各自肩负着父辈平台的野心。 还有一个楼主没有提到的就是 Rust ,工具链完善,性能足够好,生态也在越来越丰富,很对一部分函数式爱好者的胃口。但没有 C++经历恐怕不好理解复杂的语言规则是要解决什么问题,而且乱七八糟的符号有点多,代码看着快跟 Logo 一样丑… |
109
littlewing 2021-12-22 23:28:41 +08:00
不管啥语言,想要做到极致,你必须了解体系结构内存管理的知识
|
110
waruqi 2021-12-22 23:56:11 +08:00 via Android
c
|
111
GoLand 2021-12-23 00:47:04 +08:00 via iPhone
Python 符合你说的所有点。
|
112
SIGEV13 2021-12-23 03:46:23 +08:00
"特别是内存管理等等的细节" 全员退群。
|
113
xnotepad 2021-12-23 04:48:41 +08:00
从工程的角度来说 go 不错,但是还是推荐 rust 吧。
|
114
mingl0280 2021-12-23 05:04:45 +08:00 via Android
如果有 1 基本上不可能规避 2 ,你在想桃子吃。
|
115
charlie21 2021-12-23 06:43:57 +08:00
这是错误的问题,给你一个完美语言你也不会满意的
|
116
yulon 2021-12-23 07:16:51 +08:00
十全九美 C++ 啊,C++ 写好了比写脚本都爽,列表排第一的居然是 Python ,算了算了
|
117
GiantHard 2021-12-23 08:54:50 +08:00 via Android 1
我推荐 F#
1. 类似 ocaml 的函数式编程语言,自带不可变数据结构 兼容 .Net 生态,支持完整的面向对象编程范式 2. 大多数 F# 程序运行在 .Net Runtime 之上,开发者不用关心 GC 3. 如果你要让 F# 运行在 .Net 平台上,有 Nuget 包管理可以用,生态非常丰富,从机器学习到移动端应用开发,都有支持 如果你要让 F# 运行在浏览器平台上,那么整个 npm 的资源也可以为你所用 4. 语法上每年都有更新,[同样的程序,写起来比 C# 要简洁] ( https://fsharpforfunandprofit.com/why-use-fsharp/) 5. 可以跟 C# 用同一套 IDE 、性能诊断工具,除了 MS Visual Studio 之外,还可以使用 VS Code 、JetBrains Rider 来开发 BTW ,楼主好像对 haskell 这种偏学院派的函数式语言不太感冒,这跟 F# 的设计初衷也有点类似。因为 F# 开发者认为 Monad 在绝大多数程序员实际业务开发中用的很少,且为了跟 .Net 生态兼容, 所以 F# 没有提供高阶类型的特性。不在意这一点的话,F# 确实是不错的 side project 语言。 |
118
apateman 2021-12-23 09:14:28 +08:00 1
C#
|
119
darknoll 2021-12-23 09:29:55 +08:00
没啥可研究的,能把活干好就行,用什么语言也不是你自己能决定的
|
120
auto8888 2021-12-23 09:38:27 +08:00
C++ 永远的神
就是学习曲线太 JB 陡峭了。。。 |
121
LinShiG0ng 2021-12-23 10:37:12 +08:00
我只熟悉 java ,但是你要求语法简洁,那就把 java 排除掉吧
|
122
1002xin 2021-12-23 11:03:59 +08:00
那就 Rust 或 C#
|
123
Cloutain 2021-12-23 11:26:04 +08:00 1
C# 还用说吗?
|
124
Itoktsnhc 2021-12-23 11:32:10 +08:00
C# 好多票
|
125
libook 2021-12-23 11:46:33 +08:00
1. 应该大多主流语言都可以。
2. 需要管理内存的基本就得忽略了吧;虽然 Rust 在这方面要好很多,但要说完全不用关心底层细节还是没法做到的。 3. 新出的语言基本就不用考虑了,以及有重大版本更新产生兼容问题的语言也不用考虑了,JS 和 Python 基本上是万金油; JS 还多一个 Web 前端壁垒,还有 RN 可以玩玩移动 APP 开发,不过好不好用就是另一件事了;不过 Python 在 AI 方面生态比较有优势。 4. 个人感受里,Python 的设计比较前卫,JS 是哪家特性好就直接拿过来(包括 Python 的一些特性),所以这两个都可以考虑。 5. IDE 和监测工具现在都挺完善的了;有包管理器,并且支持依赖版本控制的,会比较方便可靠。 综上所述,你可以试试 JS 和 Python ,不深入了解平时也能用得上。 没有完美的语言,每种语言都有擅长的领域和不擅长的领域,最好针对不同领域学习不同的语言。 我个人的想法是同类语言没必要学太多,一类学一种就够了,比如学一个脚本语言+一个系统开发语言。 注:对于 TS ,我个人觉得 ES6 之前是神,ES6 之后比较鸡肋,缺点主要是没法直接用必须编译,而类型检查用 JSDoc 、ESDoc+相应 IDE 插件可以达到一样的效果,建议在已经掌握 JS 的前提下再根据需求学,虽然也没多少要学的。 |
126
libook 2021-12-23 11:50:40 +08:00
不管愿不愿意承认,Go 不满足第 4 条是事实,第 3 条也不大满足,第 5 条是十分有争议的; Go 是个专门为解决企业生产上的各种问题而设计的“产品”,不适合满足个人技术上的“追求”。
|
127
popil1987 2021-12-23 11:53:21 +08:00
成年人都选
C:看《深入理解计算机系统》,学习 Linux 内核,开发 stm32 Rust:开发高性能应用,SWC 给前端同学省多少时间 Golang:以太坊这类分布式加密区块链很适合 Elixir:Phoenix 框架非常适合 Web 开发,各种 Web 应用范式都有,干就完了 Haskell:开发复杂的业务应用,因为它可太可重用了,不用写大量测试,满足你高生产率的需求 Python:数据分析,写用完就仍的小工具 Javascript:Web 前端和小程序垄断地位,不学行吗 dart:Flutter ,Android 和 iOS 跨端必须要学,为什么不用理 React Native ?其它条件都一样,有静态类型谁还用动态类型啊,让 IDE 帮忙干点活不好吗 SQL:也是编程语言,不要让 ORM 迷惑了双眼,皈依函数式编程就不需要 ORM 了,SQL 才是真理 Java 和 C++能看懂源码就好,深入的话太费头发了,你看看两种语言创始人的发量 Lisp 、R 、Fortran 、Assembly 、Prolog 、APL ,可以都了解下增加下见识 |
128
mauve 2021-12-23 11:55:24 +08:00
C#
|
129
oksbsb 2021-12-23 11:59:34 +08:00
“钻研” 就 rust
|
131
levelworm 2021-12-23 21:40:26 +08:00 via Android
java c#都没问题。前者是大数据的基础语言,能把 hadoop 等源码都看透了就牛逼了。
|
132
mosom 2021-12-23 21:44:29 +08:00
因为项目需求刚开始学 Java ,真的好长好长好长……
接触过 C/C++/C#、PHP 、Python 、Golang 但就是对 Java 爱不起来(救命) |
133
meiyoumingzi6 2021-12-24 09:57:20 +08:00 via iPhone
不是很建议 python ,尤其是 cpython ,封装太厉害,底层太多实现是 c 写的,有点黑盒的感觉,另外就是,python 太容易写出花来,各种骚操作
|
134
sinnosong1 2021-12-24 10:23:50 +08:00
C#,C#会写,java 一点问题都没有。会了 C#约等于你 java 也会了。
|
135
byzf 2021-12-24 11:31:42 +08:00
备选方案里有 Java 还有啥好选的。开个团吧。
比较好的选择: Java:找工作最方便。 python ,C#:非常优秀,各方面和 java 相比见仁见智。 js:如果能忍受国内有些人比较浮夸的作风外,各方面都不弱于 Java 。 cpp:除了国内公司更喜欢用 Java 外,什么都好。 中规中矩的选择: golang:除了比不过 Java 以外什么都好。 php: 生态很好,但应用面相对 Java 没那么广。 ruby:国外和 Java 五五开,国内和 Java 二八开。 比较差的选择: rust: 很好,但只有区块链招你。 kotlin: 完全没机会超过 Java ,虽然很好。 swift:和上面那些语言比起来 swift 真不算啥。 groovy 、perl ,scala: 不是大众向的东西了,喜欢科研还不如去玩 rust 。 |