首页   注册   登录

darklowly

V2EX 第 21023 号会员,加入于 2012-05-18 18:58:12 +08:00
年纪越大写代码越慢
职场话题  •  darklowly  •  2017-08-22 14:08:24 PM  •  最后回复来自 br0x
51
想要自己搭建邮件系统,有什么好用的开源项目?
问与答  •  darklowly  •  2017-03-13 06:37:40 AM  •  最后回复来自 dynaguy
16
[成都]前端开发工程师
酷工作  •  darklowly  •  2016-06-07 18:58:59 PM
一直想找一个靠谱的 FreeBSD 的 VPS,大家有什么好的推荐么?
问与答  •  darklowly  •  2014-06-25 22:43:26 PM  •  最后回复来自 tmqhliu
9
求教,海量图片存储方案
问与答  •  darklowly  •  2013-04-09 17:40:09 PM  •  最后回复来自 nkliwenjian
9
如何系统的学习数学?
问与答  •  darklowly  •  2013-03-27 18:28:00 PM  •  最后回复来自 darklowly
16
你是一个重视理论的工程师么?
问与答  •  darklowly  •  2012-11-16 18:04:24 PM  •  最后回复来自 darklowly
7
darklowly 最近回复了
@q397064399

微软现在对待技术的态度,比之前好很多了,而且甲骨文比微软好不到哪里去,google 呢喜欢搞潮的东西,今天搞一套,明天搞一套,大家不亦乐乎,幸苦的都是程序员自己。
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#
不是应该也顺便嘲笑一下社会不好么?一群江湖油条欺负新人,还嘲笑新人?最多只能提醒一下,注意这群老油条人渣,而不是嘲笑。搞不懂各位都什么社会价值观呢?
176 天前
回复了 hidder 创建的主题 程序员 玩 nas 的老哥们,你们用的硬盘都是什么盘
用 hgst 的, 之前一个做云存储的公司,长期使用下来,评测过,故障率最低,价格也不贵。
187 天前
回复了 azuki 创建的主题 程序员 软件工程是否可以提高代码质量?
@lurenw 写的很好
1 是培养代码质量,如果团队里面的大部分人关注代码质量的话,他们也会关注工程问题
2 是需求分析和评审
3 code review
4 一些简单的,良好的辅助工具
5 一些必要的流程还是需要的
205 天前
回复了 GoPHP 创建的主题 程序员 Golang 适合 Web 开发吗?
@wwek 说的很中肯
@bobuick 是的,非常赞同
224 天前
回复了 siyemiaokube 创建的主题 程序员 关于“出身”与“勤奋”的简短杂感
@MinQ

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

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

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

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

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

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

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

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

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

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

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

@MinQ 说几句大言不惭的话,虽然现在强调终身学习。根据我的观察,一般来说,一个 25 岁的程序员,如果不具备足够的基础知识,那么他或许这辈子都很难具备了。同时基础知识会在很大程度上影响到思维模式。但是这个问题我思考了很久,到底是不同人的思维模式不同,导致有的人关注系统化的知识,有的人不关注。还是因为系统化学习,导致思维模式不同。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   944 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 23ms · UTC 22:08 · PVG 06:08 · LAX 14:08 · JFK 17:08
♥ Do have faith in what you're doing.