101
guolaopi 2020-03-28 12:28:05 +08:00
@shijingshijing
而且我面过的公司也都问 clr,最少也要问下字符串常量和值类型引用类型以及拆装箱。。。。 |
102
blless 2020-03-28 12:38:19 +08:00 via Android
c#语言当然没问题。等你用多了,才会发现他的生态是一套 ms 自家的东西,web,gui,数据库,消息队列,甚至 rpc,webservice,而且很多都要钱。然后跟其他语言路数都不一样。学了别的地方能用上的也不多,你是学还是不学呢?一句话就是鸡肋
|
103
LokiSharp 2020-03-28 12:48:10 +08:00 via iPhone
@guolaopi
付费方面,我现在就希望 SQL Server 也开源了,现在用 Postgresql 没法用 VS 自带的数据库功能有点遗憾。但 SQL Server 真的太贵了,而且默认必须 2G 以上空闲内存也有点僵硬。 服务器方面 .NET Core 我测了下现在 Linux 上性能比 Win 上好,直接用 RHEL 自带的 dotnet 完全不用自己调优,Redhat 和 MS 合作已经把 Linux 上的 CLR 优化得很好了。 JVM 需要调优主要是。。。他们用的都是不用花钱的 OpenJDK,默认的性能确实堪忧。 |
104
imbushuo 2020-03-28 12:56:53 +08:00
我 MS tech stack 起步的(
按我个人经验来说,fundamental 的东西学会了之后不用学太 language agnostic 的东西,反正大厂里都是一群自己的轮子(。 我 day 1 抓起几个没用过的语言然后看了几眼就开始写东西了,之后 delivery 也没啥问题,在计划前就上了 prod |
105
imbushuo 2020-03-28 12:57:36 +08:00
@imbushuo Typo fix: language agnostic -> non-language agnostic
|
106
xuxuzhaozhao 2020-03-28 13:29:27 +08:00
没办法的事儿啊,哎
|
107
Mithril 2020-03-28 13:50:13 +08:00
@LokiSharp SQL Server Express 是免费的,只是不支持 10G 以上的库。不过这个付费可就贵了,我记得是按照 CPU 核心数付费的
|
108
Mithril 2020-03-28 13:53:39 +08:00
@blless 来,你举例一下这里面哪些要钱?
别说数据库,.NET/.NET Core 又不是只能用 SQL Server 。EF Core 里面甚至都自带 Provider 。还什么学了用不上,Web 框架基本都是 DI 那一套,消息队列你不用 kafka ?大部分功能类似的组件设计思路基本都是相同的,无论是 Java 写的还是 C# 写的。除非你只看 API,那确实不一样。 |
110
LokiSharp 2020-03-28 14:15:28 +08:00
@Mithril #107 主要是。。。Linux 下 SQL Server 启动要求剩余内存超过 2G,也就是至少得跑在 4G 内存以上的机器上,而且内存不能有其他占用
|
111
blless 2020-03-28 14:18:21 +08:00 via Android
|
112
LokiSharp 2020-03-28 14:29:24 +08:00 1
@blless #111 大人,时代变了,RHEL/CentOS 也官方内置 dotnet 了。
关于你说的生态依赖。。。我怀疑你没系统的学过编程,现代的数据库和各种服务只要端口对上实现了协议都能用。 还有敢不敢的问题,现在这么多公司 Golang Kotlin 都敢用有什么敢不敢的。。。 |
113
Mithril 2020-03-28 14:31:39 +08:00
@LokiSharp 你在 Linux 上跑 SQL Server 。。好吧,反正官方倒是也支持。不过你这情况还是别用 SQL Server 了,换个别的吧。
|
114
blless 2020-03-28 14:33:04 +08:00
@Mithril 另外哪怕现在的 .net ,也不一定所有的 dll 都是可再发行的。你如果调用了某个系统 DLL,你发布的时候那个不是 .net 基础库里的,那么大概率要授权吧。当然这个我也没仔细查过资料,只是以前公司还在用 C#的时候的一点了解。现在 .Net 我完全不关心,Go + Docker + Linux 不比 Windows + exe 部署香吗?
|
115
Mithril 2020-03-28 14:34:43 +08:00
|
116
Mithril 2020-03-28 14:36:12 +08:00
|
118
blless 2020-03-28 14:37:22 +08:00
@LokiSharp 我当然知道变了,但是企业应用完全是另一码事,.net 4.0 出来的时候我们还在用 2.0 。因为最早的代码用 2.0 实现的。说真的现在说 C# .Net 还是 Unity 火一点,但是 Unity 那个 mono 也不全是 .Net 啊
|
119
LokiSharp 2020-03-28 14:41:43 +08:00
@blless #114 .NET Core 了解一下再来讨论吧
Go 这个语言的用户真的很神奇 有的人说它单文件部署方便真香,有的人明明知道可以单文件部署还去套个 Docker 。 嘴上却说 XXX 技术太新不敢用,自己用着特别年轻的编程语言 Golang 。 嘴上说着 XXX 语言绑定生态,用 Golang 的时候发现 XXX 数据库还是得自己造轮子。 |
120
wangyzj 2020-03-28 14:43:57 +08:00
国外还可以
老外愿意为了安全性给企业掏钱 .net 本身挺好的 而且 ms 收购 github 后和 azure 做集成我觉得.net 还可以火一把 另外现在应该都搞.net core @Livid .net 自动识别为链接真的很头疼啊 |
122
blless 2020-03-28 14:45:31 +08:00
@Mithril 跟我说有啥用哦,你去挨个找公司用 .Net Core 嘛,而且我一开始就说了,语言是很好啊,生态坑嘛。听你这意思 .Net Core 才是 .Net 生态?
|
123
LokiSharp 2020-03-28 14:51:14 +08:00
@blless #118
看你 Repo 你应该是 写 Golang 的。 别的不提,你就告诉我 Golang 写的服务,数据库想用 PostgreSQL 或者 MySQL 再挂个 Redis 的话得用哪些 driver 哪些 ORM 最稳? 之前用 Golang 整了半天,没找到一个靠谱的。 |
125
blless 2020-03-28 14:53:20 +08:00
|
126
LokiSharp 2020-03-28 14:59:13 +08:00
@blless #125
1. 所以你哪个服务很顺利的迁移(重写)到 Golang 了? 2. 请你说一下有哪个能在 Linux 上跑的语言不能 Docker + Linux 部署 3. 关于绑定生态,还是上面的问题,Golang 写的服务,数据库想用 PostgreSQL 或者 MySQL 再挂个 Redis 的话得用哪些 driver 哪些 ORM 最稳? |
127
dhssingle 2020-03-28 14:59:27 +08:00
|
128
Mithril 2020-03-28 15:00:58 +08:00 1
|
129
zhzbql 2020-03-28 15:01:29 +08:00
@Rwing
let data = [ { id: 1, date: "02-10", clicks: 1, views: 2 }, { id: 1, date: "02-10", clicks: 2, views: 2 }, { id: 1, date: "02-19", clicks: 3, views: 2 }, { id: 2, date: "02-11", clicks: 4, views: 2 }, { id: 2, date: "02-11", clicks: 5, views: 2 }, ] let result = data.reduce((a, v) => { let i = a.findIndex(a_v => a_v.date === v.date && a_v.id === v.id) if (i > -1) { a[i].clicks += v.clicks a[i].views += v.views } else a.push(v) return a }, []) 我大 js 申请一战 |
130
blless 2020-03-28 15:02:25 +08:00
@LokiSharp #123 ORM 本来就不是万能,我们现在业务跟数据库解耦,领域业务模型底层根据不同数据库实现不同数据落地,数据层用不了 ORM 大不了直接 SQL 而已,我们公司以前用 XORM,现在是自己写了一套。Redis 一样,脱离业务领域的数据是要经过编解码,Redis 我们用 Go-Redis 很久了,线上没出过啥问题。
|
132
caskeep 2020-03-28 15:05:43 +08:00 via iPhone
互联网喜欢 linux 系列产品
|
133
LokiSharp 2020-03-28 15:17:30 +08:00
@blless #130
1. 我所知道的几个用的 Golang 的团队都是选择自己造轮子。他们的结论是 Go 发展到现在十年了还没有一个靠谱的 ORM,不如自己造一个来得稳。(滑稽 2. 好像 Golang 到现在还没有一个可用的包管理吧?用个第三方库还是 go get github.com/xxx/xxx import "github.com/xxx/xxx" 吧? 3. 你都被用的语言坑到自己造轮子直接 SQL 了,还有什么脸说 .NET 生态差?.NET 下用 EF Core 换个数据库就是换个 Provider 的事情,用于查改删的 LINQ 代码都不用改一下。 |
134
LokiSharp 2020-03-28 15:22:07 +08:00
@blless #131
https://github.com/go-redis/redis 针对你举出的 Go-Redis,Golang 有一点我很早就想吐槽了,为啥 Golang 都这么多年了代码还是一股脑的丢在根目录下面。每次这种代码结构让我回想起了十几年前自己写 C 的时候的样子,一点都没有现代语言的样子(滑稽 |
135
JB18CM 2020-03-28 15:24:10 +08:00
C#在国内的岗位将会越来越少, 不想饿死的话在家玩玩就好.
|
136
blless 2020-03-28 15:30:41 +08:00
@LokiSharp 那个啥,扯到语言不是我本意。
是 Mithril 说什么要钱,我只不过顺着他话茬说 Windows 生态要钱,引入 Go 只是顺嘴吐槽而已。在我那个时候( 2016 ?)情况就是如此,具体啥时候我也记不清楚了。反正我们切换没多久好像发布了.Net Core,但是那个时候决定还达不到生产可用的水准,那个时代感觉还是遍地 CentOS6 。云商崛起之后,运维的形势急剧演化,仿佛一夜之间,大家不知道 Docker 就落伍了一样。我们差不多就那个时候开始尝试+上云。后来就一发不可收拾了,后面开的项目都用 Go+Docker 了。.Net 那个时候青黄不接,能说啥呢?要是.Net Core 早发布一些,我们公司说不定还是继续 .Net ,.Net Linq 绝对是最好用查询没有之一。不说了,反正我觉得 .Net 现状势微,微软现在也是拥抱开源策略,崛起也指日可待。 |
137
blless 2020-03-28 15:38:07 +08:00
@LokiSharp #134 要封装也可以吧,应该还是个人风格。https://github.com/gomodule/redigo 就完全不一样
|
138
LokiSharp 2020-03-28 15:47:51 +08:00
@blless
#136 没办法,这就是国内公司的现状。遇事不决跟风上 Go 、Docker,已经和量子力学差不多了。 转 Go 真的是太痛苦了,能顺利转过去真的不容易。Go 的社区太杂了,一大堆轮子看过去,写 JS 的前端、写 Python 找不到 Web 开发工作的后端转过去写的。代码写得好的有是有,但是想找到靠谱的太难了,而且每个花样都不一样,想换一个代码相当于重写。 |
139
forgottencoast 2020-03-28 16:03:36 +08:00
@g00001 #100 aardio 还是中国人写的呢,厉害。
|
141
jinmaoi 2020-03-28 18:01:58 +08:00
@greatgodwei 要不要赌一赌,我敢说在未来 5 年内将会越来越多
|
142
g00001 2020-03-28 18:08:13 +08:00
原来某人跟谁说话都这风格,几个号上了混战一番,战着战着友谊的小船就翻了,看到一次不奇怪,连续看到几次也是神奇。
|
143
sagaxu 2020-03-28 18:11:14 +08:00
@Rwing Kotlin 写起来不是一样吗? Scala 也差不多,JS 和 TS 都能写,Python 也能。Java 8 也能写,虽然丑一点。
data.groupBy { it.id to it.date }.mapValues{ (k, v) -> Sample( id = k.first, date = k.second, clicks = v.sumBy { it.clicks }, views = v.sumBy { it.views } ) } 有很多人为此从 Java 转换到 Kotlin/Scala 吗?有很多,但是相对于整体比例并不高。在不换生态的前提下,转换的人都有限,放弃生态转投 C#的意愿就更低了。JVM 抢不了 C#的领地,但能从 JVM 上抢份额的,也只有 Go,绝非 C#。 |
144
noreplay 2020-03-28 18:38:13 +08:00 via Android
黑都没黑到点儿上。
微软的更新是有时会断代更新。我遇到的例子是 EF core 。更新到 3.0 版本之后,之前的分页就不能用了。我们数据库用的的 SQL server 2008r2 。感觉这个 EF core.sqlserver 包的更新策略也太过激进了。 |
145
woscaizi 2020-03-28 20:13:13 +08:00 via iPhone
翻了上面几位朋友你来我往的讨论,有意思
|
146
YongkeLi OP 各位大佬,我想表达的是这门语言在国内的生态。c# .netcore 本身还是很牛逼,我不持偏见,但是就业环境越来越差,工资也越来越低,搞得我现在不敢有换工作的想法
|
147
Rwing 2020-03-29 00:01:24 +08:00
@sagaxu 我没说不能写,任何一个语言都能写,丑与美的区别。我的观点也跟转语言没关系,我之前说的是,一个语言是否受欢迎受待见,与语言本身是否优秀无关。
|
148
Mithril 2020-03-29 00:20:03 +08:00 1
@YongkeLi .NET Core 在国内生态不行,最好早做打算。你可以拿它来赌一份薪水还不错又不用 996 的工作,但是你还是得有一门能拿来兜底的技术。后端的话最好还是 Java,或者流行度差一点的 Go 。然后再学个 Python 基本能保证最大概率找到一份工作。
基本上面试考的都是语言或者框架的细节。但是大部分功能相似的框架设计思路都差不多。你在 Spring 里面学的那一套 ASP 里面一样用,区别只是实现细节不同而已。剩下的微服务的各种组件,数据库什么的都是通用的。然后再看看 Java 的 JVM,.NET 的 CLR 。这种虚拟机大部分算法和结构也都是相通的。你学的那些垃圾回收什么的概念也基本都能通用。 个人建议不要把自己局限在某种语言或者框架上。深入了解细节是必要的,但也就只钻研一个就差不多了。更多的精力应该放在多学习几种语言和技术框架,多总结对比看看相似的功能在不同语言和技术里面实现方法是不是一样,对比一下各自优缺点。虽说这些东西面试不会考,但是对于自己的提升是很有帮助的。 |
149
yexiaoxing 2020-03-29 01:08:59 +08:00
@imbushuo 捕抓到著名黑客一枚。
|
150
yexiaoxing 2020-03-29 01:10:25 +08:00
OT 一下,说到 .Net Core 突然想到 Bing 。2018 年 8 月的时候 Bing 就从 .Net 切换到 .Net Core,然后表示真香了 :)
Ref. https://devblogs.microsoft.com/dotnet/bing-com-runs-on-net-core-2-1/ |
151
iamfredng 2020-03-29 01:23:20 +08:00
你们有什么好争论的?看你们在这里争这些就好像看是拿砍刀切肉丁好呢还是拿美工刀切肉丁好。任何一门语言都有它用武之地何必一踩一捧?
|
152
SpencerCJH 2020-03-29 02:08:03 +08:00
有程序员那味了
|
153
imbushuo 2020-03-29 11:28:00 +08:00
@yexiaoxing 北京同事你好(
|
154
lj2016 2020-03-29 11:33:09 +08:00
传统行业,工控行业,.net 用的不要太多,这世界上不是只有互联网企业的。
|
155
pantilesoft 2020-03-29 12:49:32 +08:00
@LokiSharp SQL Server 对标 Oracle, 等哪天 Oracle 开源了, 保准 MS 第二天就跟进. ( ̄▽ ̄)"
|
156
LokiSharp 2020-03-29 12:59:31 +08:00 via iPhone
@pantilesoft 我还是老老实实用 Postgresql 吧😹😹😹
|
157
HangoX 2020-03-30 01:08:22 +08:00
C# 不错,但是这货生态链要掏钱,国内几个公司会为生态链掏钱,除非你一开始就去外企。和语言没关系,国内就是这个状况,我微博上关注一个人,在国外的,用 C#,是大神,混得也不错,国内我就没怎么见到过了。
golang 虽然新,但是人家有特性啊,能吹啊。C#你一套都搞好了,还吹啥? flutter 不也是还没完成就出来的?就是因为没完成,才能造轮子,才能吹啊。程序员的世界哪里有那么单纯,最终目的都是为了赚钱吃饭的。 |
158
quan01994 2020-04-22 10:04:00 +08:00
c#不错。.NET 因为只能运行在 windows 上,所以岗位确实有点少,也有点绑定了微软的生态链。但是现在有 .NETCore 。以后应该会有一个比较不错的发展吧。至少我作为一个.NETCore 的开发者,是这么感觉的。
|