各位朋友:
我正在写作一本Java入门书,一本跟市面上所有的Java书都不太一样的书,写作快接近尾声了,我想邀请大家来试读一下这本书的部分内容,说说具体的感受。具体来说,先招募有意的读者,对新书的前4章进行审读。
审读过程需要做什么?可以从下面几个维度评价图书:
1、目录结构设计方面是否合理
2、主次是否详略得当,段落是否衔接顺畅
3、是否有意思表述不清和表达冗余的地方
4、是否有技术性错误、无法运行的代码
5、是否有错字、别字,以及语法错误
不限于上述 5 点,如果你有更多的修改建议,欢迎告诉我。扫码加我微信,我拉你入读者群。
前四章的书稿我发到我的网站liuyandong.com上。或者加微信后我私发给您。反馈形式我在微信群里公布。
我写了一本Java的书,初稿的时候,里面讲了很多计算机和Java的历史。但是现在有一个大问题,这是一本编程的书,不能写太多的历史,现在已经删了不少历史故事。我现在不太想再继续删下去了,我害怕再精简下去,可能就要成为茫茫书海中一本没有特色的《XXXX简明教程》或者《24小时学会XXXX》这样的书了,我内心不想把我写的东西删减成这样的书。
我希望大家的反馈能改变我的一些想法,毕竟我认为现在大语言模型讲故事和讲笑话的水平可能还没达到我的水平。如果只是学习语法,大语言模型比我强多了,使用大语言模型,肯定不难生成一本类似《XXXX简明教程》的书。
如果你有时间的话,我希望大家能在百忙之中抽出一点时间看看我写的书,能我一点反馈意见。尤其是,当你看到我写的这些故事的时候,有没有觉得特别突兀?有没有那种我想学编程,感觉看了你的书,啥也没学到的感觉?我会发给大家前四章,我现在讲解第四章,这是我写的这本书的第四章——变量。前三章我会尽快的录个电台也一并讲解一下我为什么这么写,我的写作思路。
好,第四章,变量,我想解释一下我的写作逻辑。
不管哪一本编程书,变量都是不起眼的东西,变量有什么好讲的么?不就是起个名字么?我特意翻了一下我买过的编程书,确实非常的少,即使讲,也不过讲几页纸,很少有单独成一章的。但是我初稿写了快70页,删了一遍之后还剩下47页。如果再删,就真的成了《Java简明教程》了。说实在的,我写这本Java书的时候,我买了市面上6-7本Java编程的书,不是为了抄,而是学习一下别人怎么写的。
基本上,变量这里,因为太不起眼了,这几本书就给你稍微介绍一下。我手头的这本书,常量写了一页,变量写了半页多一点,final变量写了半页,就结束了。我买这些Java书的时候,我还顺便买了C语言的书,当初我还在想,是写C呢还是写Java呢,所以C语言的书和Java的书我都买了。因为我不能算是新手了,这些书我很快就翻完了。如果不告诉你是C语言和Java,如果你看这两种书,你不会感觉到C语言和Java语言有什么太大的区别。因为都差不多,介绍C语言的变量和介绍Java的变量,几乎都是一样的,怎么命名,比如只能包含字母、数字和下划线,不能以数字开头等等。实际上,这对C语言是管用的,但是对Java早就已经不适用了,对Java来说,你甚至可以用表情符号当变量名,也可以以美元符号,像PHP那样给变量命名,在Java的编译器里随处可见类似的命名方式。
还有大家想过,为什么不管是C语言还是Java,或者你所知道的任何语言,为什么不可以以数字开头么?那有没有语言可以以数字开头当变量呢?有的,这门语言叫Scheme,是Lisp语言的一种方言。我本试图解释一下为什么C语言和Java语言中的变量可以以数字开头,但是一想,妈的要解释这个,又得多写两三页纸,更重要的是,对大部分人来说,知道这些也没什么用。我就忍住不做解释了。当年我自己学编程的时候,当时我学C语言,我就问过这个问题,为什么不能用数字开头呢?结果老师也不知道,像看外星人一样看着我。后来我学习到了Scheme这个编程语言,才意识到这种规定其实是很搞笑的,避免的那些麻烦现在看来微不足道。
我在学编程的时候,我基本上读不完编程书,因为我觉得编程的书实在是太枯燥了,越向后越枯燥。因为我不喜欢读大部分编程的书,所以我非常不喜欢写这种类型的书,不符合我这种啰哩啰嗦的人的性格。一点废话也没有的书,除了教材必须看完以外,其它的根本看不下去。读不完一本书是常态,以前Amazon曾经过一份Kindle的读书报告,绝大部分的人看书停在第2章就算了。还有就是越年轻越喜欢读书,只要你年轻,就别听年长的给你建议,不要觉得年长的人爱读书,我以前曾经有这样的误解。
我觉得读书和学习有个过程,先是把书读厚,再把书读薄。比如Pocket系列的书是给高手用的,是可以放到口袋里的锦囊妙计。而我曾经想写的这本书,就是要广泛联系,胡思乱想,让读者知道编程世界上曾经发生过这么多有趣的事情。当然了,没有出版社会出这么一本书的,所以我不敢像电台里一样满嘴跑火车。
接下来,我就讲一下这一章我写作的思路了:
这一章刚开始我引用了《西游记》上的一段话,《西游记》第八十二回,妖怪问八戒你是从哪里来的,然后八戒瞎扯了一通蛮混过关。我不是讽刺读者,不过这像极了我们学习任何东西,什么东西都好像知道,但是一深入问几个为什么,马上就死了,实际上是什么都不知道。我觉得对变量也是如此,变量是编程世界中每个程序员都觉得无比简单的问题。
我先考证了变量是怎么来的,也就是变量的历史。
这不仅是Java的变量,而是所有语言的变量是怎么来的。编程的最初是没有变量这个东西的,最初的编程是一群端庄漂亮的美女连接电缆,是的,最初的“程序员”就是女的,这些女的还被拍了一个记录片,BBC拍的,我看过,记录片的名字叫《Rediscovering WWII’s femaile computers》。在1997年,给ENIAC编程的六位女士还入选了国际科技名人堂。这我都写在了书里,我觉得很有意思,最初的编程竟然是这样,靠手工连接线路。这与Java有什么关系么?当然可以说没有任何关系,当时又没有Java这个编程语言。因为最初的计算机并不支持编程,后来才支持“编程”的,就是EDSAC这个机器,有了这个机器之后,才有了“程序员”这个工种。
然后我又介绍了一个什么叫普通存储程序计算机,这是编程的基础,这是变量存在的先决条件,没有存储器,就没有变量。第一个变量也就出现在1949的EDSAC计算机上,有人也许觉得这有什么狗屁意思?但是显然并不是所有人都如此,EDSAC计算机已经有模拟器了,大家可以搜索The Edsac Simulator在网页上用计算机体验一把当年这台电脑,而且呢,还有当年的教程。剑桥大学有一份《EDSAC Initial Orders and Squares Program》的文档,供大家下载学习。这个模拟器是英国一个叫沃里克大学的几个教授写的。你说有没有人去玩这个玩意呢?有的,而且比大家想象的多,有14万人下载过这个文档,有多少人按照这个文档在那个模拟器上运行过程序呢?这个程序超级简单,就是输入一个数,算出其平方。当然你也可以运行人家写好的程序,还有两个游戏,叫Pong,就是乒乓球的游戏。
有多少人在EDSAC模拟器上玩过这个程序,这个没人统计,但是我玩过。我觉得挺好玩的,我以前向别人推荐过这个模拟器,我发现有两种人,一种是一秒就关了,这啥玩意,不想知道也不想学习,另一种是玩好几天,还去研究到底怎么实现的。在1949年的时候,就是这份文档中,已经有了变量,大家都说这是最早的变量。
接下来在书里,我又用汇编语言演示了一个变量和Symbol的联系,汇编语言中也有了变量,变量在汇编语言中有什么意义。这些看似与Java没有什么关系,但是Java也不是凭空产生的,变量再怎么变,也要继承远古的信息。
然后随着语言越来越进化,到了Java的时候,变量名要承担的信息。然后我就从变量名、变量的数据类型、变量的作用域这几个方面展开来讲变量。
先说变量名,跟其它书一样,我也认为变量名要以小写字母开始。但是如果你非要以中文名开始,表情符号开始,也不会有什么错误。这一章中第一个程序我演示的就是用各种符号来命名,如果有志于做中文编程的同学,其实吧,Java已经可以用中文编程了,只是有一个小缺点,由于Java不支持运算符重载,所以那些符号还没法用中文来写,比如=还不能写成中“等于”,+也不能写成中文的“加”,除此之外,基本上可以搞个有自主知识产权的中文编程为国争光了。当然也可以先做个预处理,那就完全没什么问题了。
如果大家有兴趣看看Java编译器的源码的话,会发现他自己都不遵守官方的指导,在Java编程器里,有大量以美元符号开始的变量。但是写编译器的人毕竟是少数,也就这样吧。
接下来,我又讲了大小写的问题,跟大部分编程语言一样,Java对大小写敏感。里面提了一嘴Go语言,显然在大小写敏感方面,Go语言走的更远了一点,不仅对大小写敏感,而且大小写还有意义,Go语言通过变量名大小写来确定相应的访问权限,而Java中还得靠相应的关键字。这是一种趋势,比如Haskell、Prolog这些新时代的语言,都赋予了大小写更多的内涵。
又讲了什么是个好的变量名,因为是写书,我就把我读过的论文贴了一份过来,有科学家研究过变量名长度的问题,论文里说,变量名的字母数在8到20的时候最不容易出bug。大部分人学Java之后,可能都会用到一个Spring框架,在这个框架里,有超长的名字,大约有40个字母那么长,我举了个例子。我第一版的时候还举了其它语言的例子,主要是Objective-C的例子,里面的变量名最长达到100多个字母,一行放不下,但是我还是删掉了。因为这好像显得很装逼,好像我懂的很多,毕竟当程序员这么多年,我用过很多编程语言,这些编程语言之间,相同的地方远多于不同的地方,只要学精通了一个,再学另一个真的不难。现实中,我确实喜欢装逼一点。我录电台就是有装逼的需求,我写书肯定也是有这方面的需求。录电台可以随意,写书就要装的斯文一点。
讲完了变量名之后,我又从另一个维度讲了变量的数据类型,数据类型分两种,一种叫基本数据类型,一种叫引用数据类型。这个真的是要讲一讲的,我没有调查过写书的人一般是什么心态,但是我能确定的是,有些写书的人知识结构是不太更新的,我手头上这本2019年出版的书,竟然白纸黑字的写着数组可以存基本数据类型,而Collection不能存数据类型,如果较真的话,这是没什么问题的,但是他又开始举例子了,比如存1,2,3,4这种要用数组,而对象要用Collection,这就有问题了,因为从Java 5开始就已经引入了自动装箱/拆箱机制,也就是说你只要写1,2,3,4就是了,至于到底是存成基本数据类型还是对象,程序员根本不用管,都有Java自己去自动处理,不信大家写一个存小写的int类型整数的Collection,一点问题也没有,Java默默的就把事给你办了。
基本数据类型这里我实在是写的太多了,后来我自己也有点不好意思了,有点炫耀自己懂的多了,就开始自己删了20多页。
第一个我讲了布尔类型,考察了布尔类型是哪个语言引入的,是ALGOL 60这个语言引入的,随后大量的语言开始采用。我们现在用的编程语言,只要你会的,基本都是ALGOL的后裔。C语言的89版本没有引入,到了C99版本的时候引入了。由于布尔类型用的实在是太多了,我就讲了一个故事,加深大家的印象:美国有一个作家叫Rachel True,她姓True,于是他用这个名字注册了苹果的iCloud账户,结果被封了。
第二个讲了字符类型。讲字符类型的时候,我又从历史开始讲起的,讲了几个历史上常见的编码,这些编码和编程语言是无关的,编码更加重要,像Java,Python这些编程语言反而没有编码重要,这些语言只需要遵守这些编码标准就OK了。编码问题最容易出的问题是:乱码。现在出乱码的情况已经少多了,但是在以前,经常出各种各样的乱码。我举的例子可能是一个比较难的,但是你掌握了这个比较难的,其它的都是小菜。我举的例子是你使用Java语言如何处理已经失传的埃及象形文字。大家要知道,埃及也有象形文字,而且现在已经没人使用了,如果连这个你都可以用Java处理了,再碰到中文啊,日文啊,表情符号啊这种的,心里可有底了。
第三个是讲整数类型的变量。我写整数写的实在是太多了,写了人类在计算机上表示整数用过的好多规则,但是与Java无关,也和任何编程语言无关,我本来还详细介绍了一下加三码。现在加三码已经不太用了,除了一些会计系统。这个加三码绝对是天才的设计,可以把浮点运算提高到整数运算的速度,缺点也是有的,存储的效率不高。我本来还介绍了原码,反码和补码的情况,作为介绍整数的前提条件。原码和反码没什么好讲的,补码有比较有趣的历史,提出补码的这个家伙一开始不被人认可,认为这就是多此一举,但是这哥们一直坚持,一直坚持,一直坚持,他是个电路设计专家,坚持了好几年,最后人们才认识到原来这不是多此一举,还有如此重要的意义。这些我已经从书里删掉了,以后我会发到我的网站上,我看了这哥们写的论文,他从数学的连续性上来证明补码的重要意义,可惜当时的世人落后于他,看不懂其中的道理。
整数有四种,因为我写的多,基本上别的书里有的我肯定写了,包括数值的表示范围什么的。对整数来说就是溢出了,我脑子里想到溢出,就想到罗永浩老师去星巴克买咖啡的场景,我就用上了,不知道书出版的时候还在不在。除了溢出,还有这四种byte, short, int和long类型之间的转换。这里的转换和C语言的有点不同,在Java中当byte和short类型进行计算的时候,比如byte类型可以表示的范围是-128到127,如果超过了128,像C语言那样的话,就会溢出了,但是在Java中不会,而是会提升到int类型。同理,short类型也是如此。但是int类型就不提升了,会溢出。
当我看到这一段的时候,一般书上会给一个解释,说这是Java的特殊例子。我当时就想,既然都提升,为什么到了int类型就不提升了?但是也没深究,有好多年,觉得Java的设计者也是脑子抽风,设计的一点也不统一。直到工作的时候,要用到Java虚拟机了,怪当初看官方文档不够仔细,人家官方的文档是这么说的,由于byte,short类型在进行数学运算的时候,相比于int类型并没有特殊的优势,于是就不再对byte和short类型提供专门的指令,而是用int类型的指令。这才让我恍然大悟。这相当于你买手机,你买64G内存的,或者买128G内存的,都统一发货256G内存的,为什么呢?因为再造64G或者128G太麻烦了,不如只接给你128G的方便。这样才能完美解释为什么byte和short类型的会统一按照int类型的来计算,并不是Java对此有什么特殊的关照,而仅仅是因为没有任何必要再对byte和short类型的提供单独的指令。如果有什么特殊的关照,那int类型的变量如果溢出了,也应该提升到long类型才合理。书上这么写其实是用错误的解释来解释一个正确的现象。相比于其它书上,我的解释肯定是正确的,因为我在公司拉磨的时候,公司有个项目是要自己管理内存,当然我肯定是做不了这么高级的活,公司请的是能干这个活的人,那个家伙叫Gil Tene,大家可以搜一下他的名字,都不用我介绍。请他来给我们指明管理内存的方向,他就来给我们上课了,怎么搞。主要的其实就是搞内存的布局,就是让Java虚拟机尽量做到C语言struct那样的内存布局。最后反正是在他的带领下搞定了,当时我才了解了一点原来如此。经过这些拉磨之后,我越来越佩服C语言是真的牛逼,看似轻轻松松,就搞得大部分语言怎么追个半辈子也追不上。
讲完整数以后,又开始讲浮点。在讲浮点之前呢,我上来先讲了三个因为浮点运算出现的bug。我是这样考虑的,对大部分人来说,觉得这太简单了,实际上,就算是你写的程序完美无缺,也会因为浮点数本身的问题导致出不少人命。其中有个不算bug的bug是由于浮点数设计问题,导致爱国者导弹防御系统出现了问题。这是美国问责局发布的一份文档,里面讲了计时系统运行了8小时,产生了0.34375秒的误差,这0.3秒对我们普通人来说什么问题也没有,但是飞毛腿导弹速度是5马赫,这点时间就飞了600米,直接炸死了28名美国士兵。没有后续的了,我也不知道他们改进后的爱国者防御系统还用不用这种浮点数,拜登也没跟我打个报告。但是我觉得用加三码或者BigNumber都是可以保持足够的精确的。
希望大家能下载一下,帮我看看,如果你能找到不认识我的人,帮我看看这个稿子,我就更感谢了。因为认识我的人,可能会有偏见,不认识我的人,评价会更加直接一点。我并不太需要赞美,我也不是玻璃心,毕竟我做了400多期电台,被各种人骂,我已经几乎可以做到心平气和了。我会认真的对待对我写的东西的评价。
然后就是变量的作用域,我就不细讲了。作用域这里,我编了一个Perl语言的例子,虽说是编的,但是你Perl代码是可以运行的,你运行一下,肯定就知道了什么叫变量的作用域。Perl的设计者把能踩的坑都踩了一遍,然后呢,大家都喜欢的Python语言又跟随着Perl的脚步,掉到了坑里。我就不细讲了,如果了解Python的读者,可以看看Python的关键字比如nonlocal什么的,就是因为作用域的问题,给出的解决方案。在这里不得不称赞一下Java的设计者,这种明显的错误,几乎是没有的。
这一章的结束,我又编了一个小故事,来讲值传递和引用传递的。
最后是习题。我留下的习题大部分是跟这一章的内容有关系的。为什么我要留下习题呢?因为我觉得,看书实际上是学不会编程的,至少离做出一个能运行的东西还是有比较遥远的距离。现在都已经是互联网时代了,手机都能看片了,我觉得也应该可以学习点真的学习资料。我本科毕业的时候,写了一篇论文,就是用Java做了一个象棋程序,当时还是Java 5,我运行了一下,还是可以跑的。但是我那时候太过年轻,写的代码肯定是不如现在的,我现在回过头去看那时候的代码,也有点羞愧。所以,我是有打算等到这本书出版的时候,读者有心考虑所有课后习题的话,我会录一个视频,写出一个中国象棋的软件出来。不能说多好吧,但是肯定比我毕业论文里的要好一些,我毕业论文里的那个象棋程序,大部分菜鸟也下不过我的软件的,当年我测试过,那时候电脑的速度才刚过1G,内存才256M,现在不可同日而语了。
论文我也保存着,但是我有点不太好意思发我的论文,毕竟里面说不定有抄袭的地方,万一以后方先生闲着没事,把我给举报了,我怕以后开出租没有本科毕业证不让开了,那不亏死了。本科有没有抄袭,我觉得应该是没有的,毕竟象棋软件那时候也没多少人做,我那些同学都做图书馆管理系统,就是借书还书的,电子商务系统,就是类似淘宝简化版。我那时也是装逼,自己一个人写中国象棋对弈软件,我也是硬写出来的,写出来以后,手指甲都咬没了,最后老师跟我的软件下了几局,我调成最高难度,每局都把他搞死了,论文答辩的时候我心想,敢跟我提刁钻的问题,我就让你们试试看看,结果老师们都着急回家吃饭,问了几个无关痛痒的问题,就结束了。比较遗憾的是没给我优秀毕业论文,只是良好,也许当时我应该调成中等难度的,让老师赢两局,说不定就是优秀毕业论文了,我至今不能释怀。如果再录视频的话,我打算用先进的电脑,再融合先进的ChatGPT来帮我写代码,这样的话,就不会有人嘲笑我写的代码烂了,因为那是copilot写的,又不是我写的。
我的论文里有一个东西是我原创的,而且原创的比较牛逼,我毕业以后的几年,国际象棋那里出了一个规则,如何让用户界面和象棋的内核通信,有个协议。我写毕业论文的时候,没有这个协议,但是我自己硬是憋出来了一个协议,那个协议竟然跟几年后国际象棋发布的协议雷同,几乎是一模一样。我当时都在想,是不是抄的我的啊。当然,开玩笑了,其实一个正常人,都能想到应该是那样通信,我也不是超人,但是当时得知以后,还是灵魂出窍,拍了拍自己的肩膀。
这大概就是我的计划,我基本上已经把书都写完了,现在已经有20多万字了,出版后会在400多页。我的想法是全方位的老王卖瓜,我会在我的电台上讲解我的写作思路,为什么这样写的,因为我写的这个书真的是跟《24小时学会Java》《Java简明教程》有一些不一样,故事多,历史多,跟考古一样。然后会在出版后花时间借助大语言模型,不管是GPT还是copilot,写出一个象棋软件来,当然不会直播的,我会选择录播。这样大家就不会嘲笑我写的代码差了。
写象棋软件有什么好处呢?好处大大的,我毕业之前,下象棋的水平一般般,但是我写了这个软件以后,每当看到公园里有大爷出没,在那里下象棋,我就会偷偷的溜过去,然后做个观棋乱说的真小人,然后把大爷赢了,再悄然离去。我这么干已经很多次了,甚至交到了好几个忘年交,我的网站上有一篇文章就是纪念我的一个下象棋交的好友。
我们做程序员这个工种的,即使最后你什么也没留下,但是你记得你曾经写过一个中国象棋软件,在晚年的时候,我们头上没有几根头发的时候,穿着两根筋的老头衫,也能在公园的一角,凭借着当年写代码在大脑里留下的思路,当一个屡战屡胜的老大爷。如果你现在还不会下象棋,推荐你一本书,因为我的书还没出版啊,只能先推荐别的人,一个名叫王再越的清朝人写的《梅花谱》,看完这本象棋书,再结合我将要写的Java象棋软件,让你在公园里胜多负少是没有任何问题的。
最后,我贴一下我纪念我的棋友的文章链接,这篇文章写于2021年5月13日:
https://liuyandong.com/archives/6916 (我的棋友——张大爷走了)
不能是最后,我主要是想找一些人审阅我的书,目前我没有特别好的方法,大家可以加我的微信,然后我把书放在我的网站上,大家可以加我的微信,然后我建一个读者群,这个读者群里呢,只能讨论我的书,如果大家讨论其它的,我也很愿意,但是要加其它的群,我有专门发学习资料的群,有兴趣的可以加那个群,希望大家谅解,这个群真的只讨论我写的书到底如何。反馈意见呢,最好是通过电子邮件的形式发给我,我的电子邮件会发到这个微信群里。因为在微信里你发给我反馈意见也不是不可以,但是最好是私聊发给我,如果在群里,那么多信息,万一我看漏了呢?但是邮件我肯定会仔细的看。
审读过程需要做什么?可以从下面几个维度评价图书:
1、目录结构设计方面是否合理
2、主次是否详略得当,段落是否衔接顺畅
3、是否有意思表述不清和表达冗余的地方
4、是否有技术性错误、无法运行的代码
5、是否有错字、别字,以及语法错误
不限于上述 5 点,如果你有更多的修改建议,欢迎告诉我。最好你能推荐给你的同学,未来的朋友或者女朋友,前女友或者前妻什么的,如果没有女朋友,为了能帮助栋哥,希望快点马上立刻找个女朋友来读一下。因为大家听我的电台,可能不自觉的就有一些好感或者恶感,这会导致评价失真,而不认识我的人,则会相对公允一些。
这一次我录的是第四章,以后我会把每一章我的写作思路都录一两期电台来讲清楚,我为什么这样写。书如果能出版的话,我就录中国象棋的视频,借助GPT或者Copilot,可能大家不想为这两个软件付钱,我试试ChaptGPT 3.5可不可以,ChatGPT3.5是免费使用的。我为什么要录播呢,因为GPT这种软件写代码是不可控的,而我希望它们可控。如果你跟GPT说给我写个象棋软件,目前是做不到的,但是你可以把中国象棋这个软件不停的分解功能,分解到某个粒度的时候,他才能是你的好帮手。外行可能觉得你跟他说一句,他就给你把事儿办了,实际上是不可能的,让GPT写某个具体的功能是没问题的,我已经用了好几年Copilot了,有点经验,能做什么不能做什么。当然了,到时候再说这些事情,我目前这个阶段最重要的事情是把书给出版了,可以发朋友圈装个逼,如果销量还不错,那就天天发朋友圈装逼。当然了,肯定有听众来来泼冷水,但是我想说的是:梦想还是要有的。
最后,谢谢大家的帮助。加我的微信,我拉你入群。
嘻嘻,刚下载了,有时间看下
亲亲
支持栋哥😄
栋哥太优秀了!
不知不觉就读下去了,这本书,写出来,就是划时代的作品。
别人写书都是自以为自己是医生,总想着在医院治疗读者的“”无知“”
你是把读者当亲儿子,不厌其烦的告诉他真正的道理
“你是把读者当亲儿子”,哥们你可太搞笑了 🙂
花半个小时浏览了一下,先在这里写一下,后续如果仔细看,再按作者的要求反馈。
这是一本好书,如果能跟一个好的出版商合作,大卖不是什么问题。
程序员,应该买一本,让其“趟”在书架的核心位置,时不时的瞅上几眼,崇拜一下作者,给自己点激励。
高校的老师们,都应该人手一本,不定期给自己的学生们进行安利,即使他自己只是浏览了一下。
目前Java入门的人群,应该就是这两类了,高校以下的人群,受大环境影响在搞C++、Python。
15 頁第一行,是不是少刪除了幾個字
感谢栋哥的努力!真的很激励我!
书稿已经下载,作为一个编程菜鸟,虽然不见得能提供有用的帮助,还是想收藏栋哥最初的灵光。
28页 main方法修饰词加粗英文
我想栋哥肯定是那种遇到事情都想问为什么的人, 所以多年下来积累了很多知识或者见解, 所以就做了电台跟大家分享. 就跟经验丰富的探险家总喜欢跟人讲自己的冒险故事一样. 写成书把自己的见解做成实物, 不仅是自己多年积累的一个见证,也能跟别人分享听到别人的反馈, 搞不好还能得到收益, 一举三得. 我觉得这才是知识的正确用法啊.
我印象最深的是刚听栋哥电台的时候他说的一句话: 你觉得别人做的什么东西不好用, 那就自己动手做一个好用的, 很多计算机的大佬都是这样做的. 这句话确实改变了后来我对待生活中事务的角度, 觉得现有的不好就去自己搞一个好的, 这样一方面在做新东西的时候能学到以前没认真了解过的知识,解决以前意识不到的bug, 还能给跟你有同样困扰的人带来便利(谋名), 还能给自己牟利,一举多得.
而且, 有一种别人搞得不行,我就自己搞一个行的这种思维方式之后,创新就变得没那么可怕了, 这正是我们这代拿来主义盛行的人最缺的东西,当然也不可否认, 拿来主义和创新缺乏并不完全是因为人本身, 也有社会的原因, 内卷, 老板让人只顾加班, 重复劳动创造价值, 时间的缺乏也是导致人遇到问题不愿意深究的重要原因. 当代最幸福的事就是自由, 自由到什么程度?对于非常讨厌的事, 可以稍加思索后就能说”不”, 不会纠结很久在于如果说”不”后会有什么不利的后果.
区别于市面上的编程书籍和教程,简直觉得栋哥这本书就是为我这样的小白定制的。讲故事式的、对话式的娓娓道来,可读性很强。故事多,历史多,不仅没有显得冗余和冲淡主线,反而更多的告诉读者“知所从来”,更容易理解,更加有料、有趣,不会再“hello world”(狗头)、不会再读上三五页看不下去,更加坚信正常人是可以学会、学好编程的。可能唯一的遗憾是主题和篇幅所限,有些地方不能展开的更多,不过,那又有什么关系呢?总不能希冀一本书解决所有的问题吧。期待尽快出版,期待栋哥更多的、独特的好作品!
开头有种趣说Java的感觉,比一般的技术书故事性更强,开头不枯燥!竟然看到了爱情,泰戈尔那句、没想到呦
我在联合早报看到新闻,摄影师用自己作品被视觉中国指侵权 遭索赔8.6万人民币,提醒栋哥认真审核,图书配图,小心被勒索
视觉中国是真无耻。
栋哥可以增加个邮箱联系方式吗
liuyandong#gmail.com