如果我能拿到知乎和 V2EX 的源码,并且能看懂这些代码,我就能掌控这个解决方案,造出类似的网站
个人觉得编程能力的实质就是,给出一套成熟的,生产环境可用的解决方案
比如我想造一个类似知乎的做内容和社交网站,我不知道怎么进行技术选型,我不知道整个网站该如何组织,我不知道各种功能该怎么做,个人觉得这些方向性的问题就是编程的主要难点
如果我能知道业界的专业做法,我写出来的东西一定就是专业的,( 问题是我不知道啊~
所以我的问题是, 哪儿有专业的代码可以学习呢?去哪找成熟的整套的解决方案来学习呢?
( 吐槽: 程序员本应该更酷的宝贵年轻生命都拿去喂代码了,代码似乎是一种资产,代码不像书本那样可以全人类共享 ....
1 spicycoffee 2018-05-23 09:35:47 +08:00 ![]() 你说的是“山寨”的本质... 那么多经典的开源项目,看去吧。 正确的路径是:学习,消化,进化。而不是直接搬过来。 |
![]() | 2 qiayue PRO 不同的规模会使用不同的技术选型,不同的架构 2011 年刚上线的知乎跟现在的知乎,是完全不一样的 |
![]() | 3 huiyue 2018-05-23 09:38:02 +08:00 你这个很适合腾讯。 好的编程学习应该是能够自己或者带领团队解决问题,创造出解决方案。 |
![]() | 4 swim2sun 2018-05-23 09:38:24 +08:00 ![]() 编程的本质是 抽象 |
5 neoblackcap 2018-05-23 09:38:50 +08:00 ![]() 我就举个反例,google 现在的 spanner,论文已经发了,你去实现试试看。别人有定制的原子钟,你怎么实现?你知道原理又不代表你能实现。 再举个例子,你拿到 redhat 维护的包的源代码也编译不出跟它效率一样的包 |
![]() | 6 sutra 2018-05-23 09:38:54 +08:00 所以有架构师这个职位来辅助你? |
![]() | 7 xianyukang OP @spicycoffee 山寨好~,这是学习最高效的方法 |
8 ben1024 2018-05-23 09:42:47 +08:00 本质是解决问题,不是创造问题 |
![]() | 9 xianyukang OP @sutra 对~,如果有架构师手把手辅助我,那我学起来肯定飞速 |
![]() | 10 UIXX 2018-05-23 09:44:06 +08:00 ![]() 想多了。"给出一套成熟的,生产环境可用的解决方案。"早已超出编程能力的范畴,这涉及到需求调研、架构设计、协调沟通,这更应该叫做工程能力。编程很简单,就是"用代码语言编写算法解决问题"。 你所表达的专业做法实际上就是"最佳实践",你提到了架构的最佳实践(你说的选型 /组织),也提到了编程的最佳实践(你说的看专业人员写的源码)。你的疑惑跟其他迷茫的人是一样的:如何获得最佳实践的经验? 还用教吗?到成熟的大公司跟牛人学习就是最快的方法了。你觉得代码不共享?上 github 看看去。 |
![]() | 11 Norie 2018-05-23 09:46:15 +08:00 via iPhone 当你有了这些源码你不就直接用了吗 |
![]() | 12 xianyukang OP @UIXX 嗯,所以应该去公司里看专业的代码~ |
![]() | 14 wuweidong0107 2018-05-23 09:48:58 +08:00 block |
![]() | 15 VoidChen 2018-05-23 09:49:23 +08:00 你这样已经失去了“创造”了,就是说换了个环境,没代码给你抄,你就不会写代码了 |
![]() | 16 Blazings 2018-05-23 09:51:57 +08:00 via Android 其实我挺赞同的, 入门学习的方法就是模仿,没毛病 |
![]() | 17 xianyukang OP @VoidChen 嗯,想表达的意思是抄 /学最棒的代码,并且理解它 |
![]() | 18 qloog 2018-05-23 09:53:06 +08:00 至少先学习各种基础知识,不然都没发抄,然后 从模仿 到 创新, 你就厉害了。 |
![]() | 19 U7Q5tLAex2FI0o0g 2018-05-23 09:53:57 +08:00 ![]() 楼主有这样的想法还是转行吧 ![]() ![]() ![]() Block |
![]() | 20 huangzhe8263 2018-05-23 09:54:14 +08:00 via Android ![]() 你这句话里面,看懂就已经是不可能的了 如果只是拿到的话,你永远不知道为什么这地方要这么做,那地方要那么做 这里面有很多 trick,很多 compromise 除非是有带路的人帮解释帮说明,不然很多细节都是无法掌控的 有些时候就是这些细节决定了 |
![]() | 21 lhx2008 2018-05-23 09:55:25 +08:00 via Android 想多了,ConcurrentHashMap 的源码给你看一个星期,你能独立写出一个凑合能用的就不错了。 如果是 python,给你看 requests 的源码也行 所以说,高楼不是一天建成的,常用单词几千个,都在字典里面,你一下记得下来吗?只能靠慢慢磨,慢慢熟练 |
22 jadeity 2018-05-23 09:56:30 +08:00 编程就是工程 |
23 ltoddy 2018-05-23 09:57:17 +08:00 v2ex 就是开源的. |
![]() | 24 lfzyx 2018-05-23 09:57:34 +08:00 编程的本质是输入和输出 |
![]() | 25 nl101531 2018-05-23 09:59:42 +08:00 via Android 是不是想表达所谓一个程序员的技术实力是解决一个具体问题的能力? 我是这样认为。 |
![]() | 26 xianyukang OP @neoblackcap 这个太底层了啦~,有比我更合适的人去解决这个问题,其实学编程是想做自己产品,而不是研究计算机科学 |
27 Kabie 2018-05-23 10:04:43 +08:00 ...不抄袭别人方案的山寨才是好的山寨 |
![]() | 28 xianyukang OP @huangzhe8263 也许只能进公司找带路人了....这个可比找本书看要成本高啊~ |
![]() | 29 vindurriel 2018-05-23 10:11:23 +08:00 via iPhone ![]() 想知道常用场景的专业做法的话 可以订一本叫 程序员 的杂志 你的总结的纰漏在 生产环境 这 4 个字 这里边有太多的变数 流量变化 代码迁移 产业风口 人员增减 |
30 ty89 2018-05-23 10:13:33 +08:00 block +1 |
31 newtype0092 2018-05-23 10:14:05 +08:00 @wuweidong0107 @littleylv 发现两个 block 精。。。 |
![]() | 32 Shura 2018-05-23 10:15:55 +08:00 ![]() 1. “如果我能拿到知乎和 V2EX 的源码,并且能看懂这些代码,我就能掌控这个解决方案,造出类似的网站” https://github.com/gcp/leela-zero https://github.com/Tencent/PhoenixGo 请开始你的表演。 2. "哪儿有专业的代码可以学习呢" github 上有很多专业的代码,你在 paper 里也能找到很多专业的代码思路。 3. “我能知道业界的专业做法,我写出来的东西一定就是专业的” 这就是你想太多了,就算你能看懂,你也不一定能实现出来,除非 copy。 |
33 SuperMild 2018-05-23 10:16:34 +08:00 ![]() 论表达能力的重要性,楼里回复说的和楼主说的根本不是一个层面的东西,要怪就怪楼主用了“本质”这个假大空的词,对于有一定编程经验的人来说,编程的本质当然不是楼主所说。 其实楼主想表达的是发现了一个“入门学习编程的好办法”,用平实的语言表达出来就不会产生误会了。 |
![]() | 34 Phariel 2018-05-23 10:25:14 +08:00 编程的本质是,自己造桥把各个部分连接起来。 你感受的本质是,别的地方有一座桥,你觉得这桥不错,想仿造一个差不多的搭在自己的河上,你没考虑过从头设计一个完全不一样的桥搭在河上。 |
![]() | 35 liuminghao233 2018-05-23 10:36:09 +08:00 via iPhone 这些工作应该自己摸索 遇到问题自己先解决 而不是上来就专业方案 参考现有源码 然后抄一下 改一下 用一下 你这种想法是完全错误的 |
![]() | 36 snailsir 2018-05-23 10:41:10 +08:00 linux 源码了解一下 |
![]() | 38 mseasons 2018-05-23 10:47:22 +08:00 我觉得不行。 |
![]() | 39 wangyifei6817 2018-05-23 10:48:29 +08:00 可别逗了 github 上那么多开源代码 所有语言应有尽有 你去抄呗 还用过来问? |
![]() | 40 mcfog 2018-05-23 10:51:09 +08:00 “代码”和“解决方案”不是一回事儿 “编程”和“软件工程活动”不是一回事儿 |
![]() | 41 KiriGiri 2018-05-23 10:55:03 +08:00 via Android “能看懂这些代码”。真的,可能连第一步都做不到。 |
![]() | 42 shuperjolly 2018-05-23 11:01:42 +08:00 只能说你对编程本质的理解几乎连皮毛都还没有,没有需求你任何功能都是多余的,系统的现状是无数次的迭代进化而来的,系统不是你说设计就能设计出来的,这也是为什么架构师不是新人能干的活的原因。 |
43 mf2019d 2018-05-23 11:41:07 +08:00 via iPhone 编程 是 人类 与机器之间的交流方式。 就像易经 是 人类 与大自然的交流方式。 比喻不太。准确。 见谅 |
![]() | 44 LichMscy 2018-05-23 11:42:20 +08:00 ![]() 赌五毛楼主编程经验不超过三年 感觉到强烈的浮躁,建议不要发这种标题党的文字对别人进行误导 另外这大致是个悖论,你要能力特别好才能进大公司,进了大公司才有机会看你想看的代码。而且大公司大部分人都是螺丝钉,不可能看到完整的一套系统代码。而且恕我直言,我觉得以你这种心态进大公司的概率低的可怜 |
45 jennifertxwoodma 2018-05-23 11:50:35 +08:00 "我发现了编程学习的本质" 就你这个标题就说明你还没有入门 |
![]() | 46 xianyukang OP @LichMscy 确实是新人,不是浮躁,是想要高效,之所以看起来浮躁是因为宝贵的年轻生命实在短,个人不乐意把整个青春拿去喂代码,这一点都不酷 |
![]() | 47 daxingzhesun 2018-05-23 11:53:23 +08:00 给你知乎的源代码你也搞不出现在知乎这样的网站.我敢 1000%保证 |
![]() | 48 daxingzhesun 2018-05-23 11:53:45 +08:00 ![]() 典型的就是啥都准备好了,就差一个程序员的思维 |
49 panda1001 2018-05-23 12:11:40 +08:00 真正的数学能力是做题从来都不看例题,怎么答都靠悟,这种悟就是数学能力,拿着例题的思路解题就是 copy,考试得分又能怎样,所谓的数学能力你还是学不到, 做不出题只能说你缺乏这种数学能力,不配学数学,像基本计算这种从来都没做错过,真正的大牛都是,编写小学数学的都是垃圾,0/0 这种表达式怎么就是无意义呢,完全就是误导小学生,一开始学数学就应该看高大上的国外名著,什么英语看不懂,你想学好数学怎么可能不学英语 |
![]() | 50 changnet 2018-05-23 12:13:56 +08:00 via Android 楼主你显然不知道什么是编程的本质,更加不知道技术和产品的区别,也不了解技术转换为产品的过程。你想要源码? gayhub 上多得是。 |
![]() | 51 xianyukang OP |
![]() | 52 kaedea 2018-05-23 12:21:27 +08:00 一些思考的转变: 1. 编程的本质就是操作数据 2. 类就是编程( Java ) 3. 编程的过程就是抽象的过程 |
53 kaneg 2018-05-23 12:26:25 +08:00 via iPhone 架构师就是干这个活的 |
![]() | 54 6IbA2bj5ip3tK49j 2018-05-23 12:32:42 +08:00 ![]() @xianyukang 『个人不乐意把整个青春拿去喂代码,这一点都不酷』 这就是浮躁。 没有公司是请人进去看代码的。 要看代码,github 上有一堆,完全满足你的要求。 『纸上得来终觉浅 绝知此事要躬行』 代码本来就不是资产,根据问题写出代码才是资产。 BTW,知乎和 V2EX 有价值是压根不是代码,指不定代码有多烂。 |
![]() | 55 stevenbipt 2018-05-23 12:35:44 +08:00 via Android 那么研究算法会不会很有意义~ |
![]() | 57 1daydayde 2018-05-23 12:48:11 +08:00 via iPhone Linux 源码拿去,我就不信你照抄能超出一个类似的来 |
![]() | 58 rosu 2018-05-23 12:50:49 +08:00 via Android ![]() @xianyukang 楼主理想化了。 进公司,看专业代码,问人,理解代码,学会并掌控...每一步都充斥着非常大概率的失败。 连你自己都说了“假设能做到”,这里的假设不只是给你这个机会,而且是给你之后你是否能把握得住。 除非你能证明你确实每一步都做得到,不然就是在浪费大家时间。 |
![]() | 59 dopppler 2018-05-23 12:50:58 +08:00 ![]() 腾讯:你被录取了。 |
![]() | 60 jmc891205 2018-05-23 13:01:21 +08:00 你错了 我敢打包票 这些成熟的产品的代码都是臭气熏天的 离优美十万八千里远 |
61 carlclone 2018-05-23 13:05:25 +08:00 铜币拿好 , SB |
![]() | 62 xianyukang OP @changnet 想做 xx 类产品,如果能找到类似的专业的精准的源码来学习,那应该挺高效的,当然能不能看懂那得另说 楼主的目的是看懂源码,掌握专业做法,掌控一套解决方案,方便找工作也方便自己搞产品 个人猜测,编程的本质不是抽象,不是算法,不是艰深的底层知识,而是写出产品的雏形, 很多技术出生的互联网大佬,最后都不碰代码了~ |
![]() | 63 wezzard 2018-05-23 13:08:13 +08:00 程的本是解世界、改造世界。 |
![]() | 64 nullen 2018-05-23 13:12:14 +08:00 @neoblackcap 单纯说 原子钟的话,淘宝也可以买到,搜索关键词:“铯 原子钟”,“铷 原子钟”。 |
65 willvvvvv1 2018-05-23 13:16:31 +08:00 如果我能拿到知乎和 V2EX 的源码,并且能看懂这些代码 这里就有悖论了。你怎么保证你能看懂这些代码? |
![]() | 66 nullen 2018-05-23 13:18:48 +08:00 |
![]() | 67 deadEgg 2018-05-23 13:25:12 +08:00 ![]() 拿到架构方案 不靠自己思考,如何知道利弊与合适? 大公司为什么要自己造轮子,因为只有自己的轮子才适合自己的公司啊。 不能单纯的套结论,单纯的套结论套现有的方案拿一辈子只是个面向 stackoverflow 编程的从业人员。 自己创新自己想什么是适合现有架构的,对现有的东西是最好的并且能够实现比较的出的架构才是好架构。 |
![]() | 68 xianyukang OP @rosu 有道理~ |
![]() | 70 nuxt 2018-05-23 13:33:01 +08:00 你好,我是腾讯的 hr,请问你要换工作了? |
![]() | 71 xianyukang OP |
72 nynuchuxy 2018-05-23 13:38:35 +08:00 对,你说的很对 手动滑稽 |
![]() | 73 nullen 2018-05-23 13:43:50 +08:00 说一下我个人观点吧:这个是比较典型的“眼高手低”,看过就认为自己”掌握“了,实现当前方案背后的思考过程才是更重要的。 |
74 iConnect 2018-05-23 13:46:34 +08:00 via Android 楼主缺虚拟币直说,不用装搓 |
75 KgM4gLtF0shViDH3 2018-05-23 13:47:47 +08:00 v2ex 是开源的。。 |
![]() | 76 blodside 2018-05-23 13:52:48 +08:00 这是大学生学习编程的本质吧 |
![]() | 77 chris89 2018-05-23 13:53:51 +08:00 知其然不知其所以然 或者别人的框架限制了你的想法 |
![]() | 78 mrvon 2018-05-23 14:02:55 +08:00 成熟的业务解决方案,很多都是在赚钱的代码。是不可能给你看的。 |
![]() | 79 lzjamao 2018-05-23 14:25:48 +08:00 楼主是从技术生产、解决场景问题的角度理解编程,没毛病。但如果 ctrl+c、ctrl+v 代码就可以解决问题了,还要程序员干嘛呢?“日益增长的物质文化需要”,等待编程员解决的问题不会停止。 |
![]() | 80 UIXX 2018-05-23 14:31:55 +08:00 ![]() 你的题目主语是编程学习,我觉得你的叙述没毛病。 你这种学习方式叫做目的导向型,我想做知乎仿站--如果我能读到并理解知乎源码,我能仿一个。 这种想法不错,但把问题一展开你就头痛了。 如何获取知乎源码? 如何理解知乎源码? 正常情况下你需要进入知乎当工程师,你要有理解知乎源码的先导知识。这本身就已经包含了一个如何学习元知识的命题了。当你具备了这两点之后,你当然可以! 关于模仿与学习。我觉得这两个不分家。(不是指那种抄袭商用) 做过深度学习的人都知道。要让一个神经网络算法训练模型最基本的是要有原始数据输入。小到官方网站的 demo,大到完整源码,只要被你看到并理解了,那这段数据在你大脑就已经形成了一个模型了。接下来模型的进化就是你不断积累与学习的过程。这本身就是人类学习万物知识的一个步骤。 |
![]() | 81 simpleman 2018-05-23 14:49:23 +08:00 via Android ![]() 我觉得是骗回复的 |
![]() | 82 ycz0926 2018-05-23 15:06:13 +08:00 我接触到的,一般是经验为主,比如,开始你对 web 的后端( nginx、uwsgi 和 django )这些东西,可能业界有比较好的实践,相信 java、go 之类的也应当是如此的 当然了,软硬件都在发展,举一个例子看别人博客 tou 来的 linux 内核之前只有自旋锁、rw 锁,但是单个 cpu 性能上去了,就有瓶颈了,就会出现新的 solution,比如 rcu, 所以啦,以前的 driver 也可能会跟着 update,但是同步机制的原理不同步带来的临界区争抢还是不变的 一点浅薄的理解,可能说的有误 |
![]() | 83 KimJongun 2018-05-23 15:10:11 +08:00 https://github.com/antirez/redis 拿走不谢,快去看专业的 |
![]() | 84 sammo 2018-05-23 15:19:07 +08:00 via iPhone what is the details, when to hide the details, when to deal with the details, how to hide/dealwith/hide/dealwith/hide/dealwith some details to make a thing |
85 unusualcat 2018-05-23 15:31:43 +08:00 代码本来就是著作权的一种啊,不能全人类共享很正常啊。 |
![]() | 86 sheep3 2018-05-23 15:34:40 +08:00 实际情况如果和你想的那么简单就好了... 不同背景,不同资金、不同的人,解决方案都是不一样的。 |
![]() | 87 opengps 2018-05-23 15:34:43 +08:00 你自己就能写出来,但问题是,1 个用户和 100000000 个用户还是区别很大的 |
88 salamanderMH 2018-05-23 15:38:52 +08:00 php 内核源代码我都看了好几遍了,我还是写不出一个类似 PHP 的语言 |
89 neoblackcap 2018-05-23 15:54:07 +08:00 @nullen 原子钟一个例子而已,如果这个例子不合适,那么举 Google 内部的 TPU 吧,这个市面上总没有了。 |
![]() | 90 lightening 2018-05-23 15:59:47 +08:00 编程的本质是:用准确、毫无歧义的语言描述出自己的需求。 http://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/ |
91 Abblee 2018-05-23 16:02:47 +08:00 我觉得编程的本质是解决问题 |
92 wekw 2018-05-23 16:03:08 +08:00 人类一思考,上帝就发笑。 楼主,先去做吧,别瞎想了,做得多了既然就知道本质是什么了。 |
94 mandy0119 2018-05-23 17:13:22 +08:00 你说的东西不是编程的本质,是架构,但是架构远远不止这么点。 |
95 Heavytiger 2018-05-23 17:27:52 +08:00 本质:为了生活 |
96 balamiao 2018-05-23 17:53:49 +08:00 别逗了,哥们,扯淡也不是你这样来的~ |
![]() | 97 zoffy 2018-05-23 17:57:56 +08:00 架构师是可以自己根据计算机工程知识做出方案的,不然算不上架构师 |
98 lscho 2018-05-23 18:04:31 +08:00 linux 开源,麻烦做个操作系统 |
![]() | 99 rim99 2018-05-23 18:09:59 +08:00 via iPhone 看代码不如写代码,得知道为什么这么写,踩过的坑有哪些。当然了,看比不看强。 |
![]() | 100 zhenghuiy 2018-05-23 21:01:07 +08:00 via iPhone 模仿只是学习的前期,后期还是要会创造 |