V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  darklowly  ›  全部回复第 3 页 / 共 19 页
回复总数  372
1  2  3  4  5  6  7  8  9  10 ... 19  
1 node 不太可能

2 golang 也不太可能,我大概从 2012 年低开始用 go,2016 年开始全职用 go。看过无数的 go 语言的开源项目,能够把 go 语言用好的不多。

主要原因是,现在市面上的大规模教育和学习的方式是基于面向对象的模式构建的,所以大家形成了一套用面向对象模式解决问题的思路。


如果把 C 语言看成爷爷,C++就是儿子,C++这儿子把家族发扬广大光大,但是引入了太多东西,搞的太复杂,Java 就是孙子,把 C++这爹犯的错误纠正了一些,所以 Java 这孙子其实很多地方设计的刚刚好。

C++是 C 语言的扩展版,解决了很多不方便的问题,以及引入了新的编程模型,以及代码的组织方式,但是总体来说太复杂,所以实际工作中,用的都是 C++的子集,就怕新手喜欢秀特性,害怕别人不知道自己懂这个特性,非要到处用。

Java 是 C++的阉割版,相对于 C++来说,对语言进行了限制,让大家写代码不要那么潇洒任性。相对于 C 语言来说,限制了指针(同时也限制来手动内存管理),增加了面向对象模型(限制了多重继承)。


go 语言是在另一条路上改进的 C 语言

首先看一下这段 C 代码
```
struct bird {
char *name;
};

const char *bird_get_name(struct bird *b)
{
return b->name;
}
```

再来看一下这段 go 代码
```golang
struct Bird {
bird string
}

func (b *Bird) getName() string {
return b.name
}
```

在语法上改进了 C 语言的很多小问题,保留了指针,去掉了手动内存管理,加上了很多方便用的库

另外一个改进是,看一下 C 语言里面的命名方式 bird_get_name, 一般的 C 代码的命名方式是 模块+功能,例如内存模块可能是 mem_xxxxx. go 语言里面把模块组织成包,那么就变成了 mem.xxxxx,同时限制了包的循环引用。

这一个改进对于系统开发而言是非常好的,但是对于业务开发而言却不太好。

因为对于系统开发而言,很容易按照功能分模块,例如内存管理功能,文件系统功能等等,业务开发一般是分层模式。换句话说,go 语言很好的支持了按照模块组织代码,但是按照分层模式组织代码却很别扭,但是 java 两样都可以。


3 如果.net core 继续发展,听说微软在.net 5 里面要搞成一个夸平台的,通用平台,取代 java 的很可能是 C#
2019-05-26 23:44:33 +08:00
回复了 hidder 创建的主题 程序员 玩 nas 的老哥们,你们用的硬盘都是什么盘
用 hgst 的, 之前一个做云存储的公司,长期使用下来,评测过,故障率最低,价格也不贵。
2019-05-15 12:01:57 +08:00
回复了 azuki 创建的主题 程序员 软件工程是否可以提高代码质量?
@lurenw 写的很好
1 是培养代码质量,如果团队里面的大部分人关注代码质量的话,他们也会关注工程问题
2 是需求分析和评审
3 code review
4 一些简单的,良好的辅助工具
5 一些必要的流程还是需要的
2019-04-28 01:11:39 +08:00
回复了 GoPHP 创建的主题 程序员 Golang 适合 Web 开发吗?
@wwek 说的很中肯
@bobuick 是的,非常赞同
2019-04-08 17:26:30 +08:00
回复了 siyemiaokube 创建的主题 程序员 关于“出身”与“勤奋”的简短杂感
@MinQ

理论上,课上好好学习,课外多看点书,多写点代码,基本足够了。但是实际情况是,老师在划水,同学在划水。所以及格率其实不高。

另外国内,重“技术”,轻设计。所以培养出来的人,大部分都是写出来,跑痛就好,管你设计的好不好,老夫一把梭。
2019-04-08 00:38:10 +08:00
回复了 siyemiaokube 创建的主题 程序员 关于“出身”与“勤奋”的简短杂感
其实这是两个问题

1 学科划分
2 划分后的知识

回复中不少人,聊的是数学问题,计算机行业是一个工程行业,需要一定的数学基础,但是总体来说,都比较简单。更复杂的数学问题,是数学专业干的事情。当然,少数计算机专业的同学,也在做这样的事情,但是总体来说并不主流,主流的程序员还是在做工程应用。

在这个前提下,当然也需要很多基础知识。

1 基本的工科知识 (数学啊,物理啊之类的,高中水平完全足够了)
2 数据结构算法,操作系统,网络等等。。计算机基础知识
3 设计,架构知识
4 工程知识

不同人做的工作不同,侧重点完全不同,有的人做很底层的技术,有的人做中间层技术,有的人做纯业务。那么要求是完全不一样的。但是就国内小公司来说,不管做什么工作,及格的比例其实很低。

举几个常见的例子:
和一些做 web 后端、做游戏的同学聊过一个常识,就是数据库事务,很多人是一脸懵的。很难理解天天要遇到的东西,居然全然不知,那么就可以马上脑补,他们在解决这类问题时用的奇淫技巧。

公司的同事,总是喜欢聊高并发,大数据,性能优化。聊一会就发现他们连基本的内存模型,多线程模型,异步 io,数据库索引,之类的都是模糊的。那么也可以脑补,他们的优化手段是什么。甚至该优化哪里,都是在碰运气。更可怕的是项目一开始重点就已经在聊优化问题了,做出来的设计真的让人害怕。

还有很多细节方面,如何写好一行代码,如何写好一个函数,函数参数该如何定义,如何分解函数,如何分解类,如何解耦,这些基础的设计问题,大多也都不及格。基本上都是老夫一把梭的姿态。旁人也不好说什么,就算是说出来了,得到的答案就是能跑就行了啊,何必在一这些细节,最后反过来给你扣帽子

我觉得计算机方面的知识,如果足够的话,除了很冷僻的领域,理论上,可以通过短暂的学习,就具备该领域中等水平。因为对一个陌生领域的建模,本身也是计算机基础知识。

@MinQ 说几句大言不惭的话,虽然现在强调终身学习。根据我的观察,一般来说,一个 25 岁的程序员,如果不具备足够的基础知识,那么他或许这辈子都很难具备了。同时基础知识会在很大程度上影响到思维模式。但是这个问题我思考了很久,到底是不同人的思维模式不同,导致有的人关注系统化的知识,有的人不关注。还是因为系统化学习,导致思维模式不同。
@scnace 感觉这个 demo 太简单,太理想化了,在实际生产环境中,稍微复杂一点的项目并不合适。

例如 参数过滤,分页,那么 repository 这里必须要知道这些参数。当然你可以传到 repository 里面,参数多起来,整个函数看起来,非常丑。

又例如,事务处理,也是类似的
2018-08-31 21:37:55 +08:00
回复了 Cbdy 创建的主题 Go 编程语言 Golang2 会加入泛型、包管理和异常吗?
其实我更希望加入 enum
2018-07-04 15:22:43 +08:00
回复了 cc959798 创建的主题 Go 编程语言 请问 GO 的开发效率和什么语言类似?
没有可比性

如果是写小工具,无疑是 python
如果是写展示性网站,无疑是 php
如果是做企业开发,无疑是 java

你可以用 go 替代 python 写小工具,但是开发效率要低一点点。
你可以用 go 替代 php 写 web,但是开发效率要低一点点。
你可以用 go 替代 java 做企业开发,有的地方效率要高一点。在涉及复杂业务逻辑时,java 因为成熟的社区,成熟的模式,成熟的框架,成熟的工具,效率会高很多,如果是用 go,你需要重新去造 java 的轮子。很多时候其中的一个小轮子,就够你造半年了。并且前提是,你的能力是足够的。如果你能力不足够,造出来的轮子,还没 java 的好。

所以 go 语言只能作为开发效率更高的 c 来用(当然 C 的适用范围会更广)。
@ATiGr 所以还是去买 bear,按年订阅,没有歧义。
@Lattez 官方说法是买断,既然叫买断,不言而喻。但是怎么就又要升级收费了呢。
APP STORE 买了不到一个月,用了一次,这就要升级,重新收费了...
难道就我一个人觉得 vscode 很丑么?
2018-05-15 12:42:11 +08:00
回复了 Aluhao 创建的主题 MySQL SELECT COUNT(*)超级慢,讨论一下解决方案
这类表一般是插入后不怎么修改,

1 分表
2 新建统计表

可以用通过触发器,在插入的时候触发一下更新统计表
2018-05-11 03:30:43 +08:00
回复了 JerseyCafe 创建的主题 Go 编程语言 想知道大家在 Mac 下写 Go 都是用的什么 IDE
vs code 一直感觉太丑了
2018-05-11 03:30:23 +08:00
回复了 JerseyCafe 创建的主题 Go 编程语言 想知道大家在 Mac 下写 Go 都是用的什么 IDE
atom 安装 go-plus 插件,然后修改一下 keymap,好用的一笔
2018-05-09 08:38:05 +08:00
回复了 Cbdy 创建的主题 Java 今天出了一个 Java 笔试题(语法题),有兴趣的同学来做做😄
其实一个闭包可以搞定全部
另外算法是 平方和
2018-05-08 12:14:04 +08:00
回复了 johnsneakers 创建的主题 Redis 惊了 redis 还能这样玩??
@johnsneakers


第一

你的原话是( 第一次见这样玩的 ,我太菜了,怎么给对方说都不听)。

注意这里的措辞

第一次见这样玩的
我太菜了
怎么给对方说都不听。

就算不是喷?也带着极大的负面情绪。

第二

技术类的问题,网络上有很多的资料,如果自己没见过的,不懂的,第一反应,应该是查资料,而不是惊叹,也不是到论坛上讨论。在你把所面对的技术问题本身搞清楚了,再来讨论比较好。附赠一篇文章给你( https://blog.csdn.net/danky/article/details/1370632

第三

在 redis 里面,本身就是一个大的 hashmap,然后 hashmap 包含很多的 key==>val,同时这里的 val 可能有多种类型。当 val 是 hashmap 的时候,他的数据结构本身和 redis 的大 haspmap,并没有太大的不同。

获取一条数据的流程大概是:
1 从大的 hashmap 拿到 user 集合的小 hashmap O(1)级别
2 从小的 hashmap 拿到 user 的信息 O(1)级别

你的想法是一步就能拿到的,为什么要两步? 性能损失了 50%?其实完整的过程是:
1 发送命令给 redis
2 从大的 hashmap 拿到 user 集合的小 hashmap O(1)级别
3 从小的 hashmap 拿到 user 的信息 O(1)级别
4 返回数据
2 和 3 都是 O(1)级别, 相比 1 和 4 的时间,可能 5%都不到。那么性能是微乎其微的。

第四

我并不是倾向于把所有用户放到一个 key 里面,也不倾向于一定要分开放,具体问题具体分析。我只是想说两种方案都可以。
2018-05-08 11:12:41 +08:00
回复了 johnsneakers 创建的主题 Redis 惊了 redis 还能这样玩??
同时注意几点

1 搞程序的严谨一点, 不要觉得自己没见过的,就不合理,就要喷一下。
2 适当的调查一下,或搜索一下就能解决的问题,不要拿来喷
3 标题党太严重,还是你自己真的十分大惊小怪?
1  2  3  4  5  6  7  8  9  10 ... 19  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5420 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 07:57 · PVG 15:57 · LAX 23:57 · JFK 02:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.