2022 年最适合写业务代码的编程语言是哪个?

2022-01-24 00:01:44 +08:00
 aljun

2022 年,各个语言已经有了长足的发展,但其实业界更多的需求还是写业务。

这里写业务主要考虑的是解决问题的敏捷性与后期的可维护性扩展性,在性能层面要求不会特别的高,考虑的不只是语言本身的特性,还包括语言本身的生态。当然也需要考虑招人或者新人上手成本。其中业务泛指非计算要求极高的场景

其中我觉得作为候选的为:

当然也不限上述语言,C++Rust就算了吧,用那个写业务首先在敏捷性就不太好

因为限定为 2022 年,考虑的范畴都为该语言最新版本,且没有历史包袱

提名请给出具体的理由

25980 次点击
所在节点    程序员
233 条回复
liuxu
2022-01-25 11:26:52 +08:00
没有不健全的语言,只有不健全的大脑

我不是在指谁,我只是根据我的个人签名想到了一个好好笑的谐梗,忍不住说出来

道理我都懂,我用 rust
liuxu
2022-01-25 11:32:35 +08:00
考虑到 springboot 的便利性,laravel 强悍,go 的性能

任何项目都用 php 和 java
超高性能 api 用 go
爬虫和数据分析用 python

其实 go 可以和 php/java 项目混用,做高级读 cache 层,从 twitch 泄露出来的项目来看,ruby + php/laravel + go
v2exe2v
2022-01-25 11:35:15 +08:00
python, 面向 google 编程
pengtdyd
2022-01-25 11:43:34 +08:00
为什么没有 PHP !!!!!!!!!! PHP 天下第一,有谁不服的吗?
lybcyd
2022-01-25 12:02:06 +08:00
@Hanggi 这个两个词的区别就是完备、完善。当然了,其实争这个没多大意义,深究起来就是抠字眼罢了。
回到主题,Go 的确很坚持他自己的那一套哲学,这是他和其他主流语言不同的地方。这样设计当然有他的道理,但是大多数人写业务代码不会去追究那么深,无非就是快速、清晰、方便地实现业务。这种情况下,当然是标准库 API 越丰富越好,例如完善的集合处理 API 可以大大提升开发速度,同时又有着很好的可读性,filter.map.join 这一串显然要比 for 、if 之类的套来套去要舒服多了。在这方面上 Go 的确是比不了其他语言。当然,Go 的优点也有很多,只不过楼主只针对堆砌业务代码这个场景而已。
Itoktsnhc
2022-01-25 12:03:50 +08:00
@bthulu
多个请求之间共享数据是个什么操作? 有更具体一点的例子嘛。
controller 的确是 scoped 的。
如果需要在 singleton 中调用 lifetime 更短的服务可以考虑直接注入 IServiceProvider /相对应的 Factory(如 IDbContextFactory<xxxDbContext>)
``` c#
using var scope = _sharedSp.CreateScope();
var sp = scope.ServiceProvider;
var svc = sp.GetRequiredService<IXxxService>();

```

``` c#

await using var context = _dbFactory.CreateDbContext();

```
ila
2022-01-25 12:04:49 +08:00
@BeautifulSoap 自己写模版,根据 sql 表生成了
Itoktsnhc
2022-01-25 12:17:01 +08:00
@Itoktsnhc
如果要实现类创建后执行一次这种事情 C#中有 Lazy<T> 不需要用静态字段标记这种比较麻烦方法

总结一下:
1. controller 是 scoped 所以对应的 service 生命周期最好要<=scoped
2. 请求之间共享内容一般借助缓存(MemoryCache?/Redis/DB)吧,asp.net core 有自己的 IMemoryCache,配合 Lazy<T>可以做到线程安全的延后初始化
3. 长生命周期内想调用短生命周期的 svc 可以通过注入 IServiceProvider 的方式实现
4. 防止构造函数注入的 svc 过多,可以使用 MediatR 类的库。
5. 跨方法事务 dotnet 中有 TransactionScope ,可以在跨方法调用中使用, 很方便
BeautifulSoap
2022-01-25 12:30:03 +08:00
@Hanggi 等等,你都没发现自己说的话前言不搭后语有问题??

“Go 语言已经可以构筑当代云原生的从底层到应用的方方面面,且大部分都是纯 Go 语言写的。这就已经说明其标准库(包括谷歌扩展库)已经很健全了”

你前面说的是 **Go 语言** 已经可以构建当代云原生的方方面,但 Go 语言 ≠ Go 语言标准库 ,你到底是通过怎样一层逻辑转换才通过 Go 语言可以构建当代应用得出了标准库已经很健全的结论了?

难道你想说的是“通过 Go 标准库可以构建当代云原生方方面”? 并且结合你对健全的定义是“Robust",那么我们就以你对“健全”的这个定义来做个最极端假设:
假设有一个叫“mini Go 语言标准库”的标准库,这个 mini 标准库除了 runtime 这种没法自己直接实现的功能之外不存在任何其他功能(包括 json 、re 、sort 这些全都没有)。通过你对“健全”的定义:

1. 通过这个 mini 库你完全可以构建现代云原生应用的方方面(唯一区别就是你需要自己实现 json 、re 、sort 所有这些轮子罢了)
2. 然后因为这个 mini 库功能小到极致,所以其足够安全、强壮、稳定

那好,根据你对“健全”的定义,这个功能少到极致的 mini 标准库也能被称为“健全”,对不对?
zoharSoul
2022-01-25 12:39:18 +08:00
@Hanggi #119 你已经自我洗脑成功了
Goooooos
2022-01-25 12:51:50 +08:00
感觉有人已经把 go 当成圣经,开口闭口设计理念和哲学
没有 filter 就没有了,就像没泛型
Hanggi
2022-01-25 12:53:53 +08:00
@BeautifulSoap
怎么还 json ,sort 啥的都没了,你看了标准库吗?

你能有点逻辑吗?我说的不够清楚吗?

如果有一个你觉得应该存在于标准库的功能,但是标准库没有,那么请你去 Gerrit 上贡献你的代码。
去完善标准库,你去尝试去实现你所说的那些没有的功能。好吗?而不是在这儿抱怨?

任何人都可以去贡献啊,你说数组没有 filter ,你写个 filter 到 Go 语言标准库里,跟他们说:“你们的标准库不太完善,我帮你们完善一下,填补标准应该有的基本功能”。ok ?
如此基础的功能应该谁都能实现吧?标准库不健全,那么就请完善它。
如果觉得麻烦,你可以把你的实现代码发出来,让大家一起讨论讨论,如何?

@zoharSoul 你也被上面这个人洗脑了?
这么清晰的逻辑,你能不能也通过自己的大脑思考一下呢?
或者说你也想去贡献一下?
starcraft
2022-01-25 13:00:04 +08:00
这还需要问吗?业务就是 java+js ,目前已经无敌了,没有任何其他语言能构成威胁。想类似 php 这种,一定一年不如一年,能活下去也是越来越往鄙视链底层走、薪资底层走。
BeautifulSoap
2022-01-25 13:07:32 +08:00
@Hanggi 你的回复简直驴唇不对马嘴,对牛弹琴。建议重看我的 169L
h82258652
2022-01-25 13:11:14 +08:00
培训班教哪门就选哪门吧
手动狗头

还要考虑招人和成本,这怎么选,现在 .NET 都没几个培训班了,见得最多就 Java 和 Python 。
liaohongxing
2022-01-25 13:17:54 +08:00
@BeautifulSoap

Go 的标准库已经很完善了。json base64 正则 图片 http http2 socket 时间 sort 字符串 文件 加密 html 定时器 等等全都有可以说是很健壮 。

你要是介意没有 filter 也可以继续喷,这个没法
Hanggi
2022-01-25 13:21:02 +08:00
@BeautifulSoap
我其实早就没兴趣给你说通什么,只是太多人有你类似的想法,进而误导更多人。

你做假设的时候能匹配上你刚开始的言论吗?健全这件事已经没必要再纠结了,我上面也说了,横向对比其他语言,Go 语言标准库已经算是比较 Robust 的了。

我现在只想看看你到底怎么为 Go 语言标准库做贡献,完善你说的那些缺陷,我也好学习学习。
你现在已经脱离了最初的论点,揪着“健全”讲个没完,能把你一开始抱怨拿出来说说吗?
数组没有 filter ,你来解决一下,代码发出来给大家看看,好不好?
(我本来不想这么说的,但是你开始耍 wu lai 了嘛,那就拿出点东西,证明一下标准库连这么简单的功能都没有。)
cover
2022-01-25 13:22:17 +08:00
你们慢慢讨论,我写 kotlin 去了
wdhwg001
2022-01-25 13:33:55 +08:00
@pythonee 国内生态一般,国外的还行,感觉该有的都有。

这个问题主要聚焦的是业务代码,而在这种 CRUD 方面的话,c#的 ef 简直把国内经常用的 mybatis 这种半自动 orm 按在地上打,并且也比 hibernate 这种全自动武器好用不少。
alpha1130
2022-01-25 13:40:40 +08:00
PHP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/830159

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX