区块链–以太坊智能合约编程学习笔记


合约的科普知识

在以太坊虚拟机上,合约程序自动执行,无法被人类干预。一旦部署无法修改。每次执行合约即需要消耗GAS,所以,像C语言一样严谨是必要的。我戏称它为:业务C语言

开发

→编程的语法

  • 开头
pragma solidity ^0.50意味着所使用的编译器,0.50<=编译器版本<0.60
  • 状态变量和函数
示例-1

→可见修饰符含义

→→public与private

对于public和private,相信学过其他主流语言的人都能明白:
  • public修饰的变量和函数,任何用户或者合约都能调用和访问。
  • private修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。

→→external和internal

除 public 和 private 属性之外,Solidity 还使用了另外两个描述函数可见性的修饰词:internal(内部) 和 external(外部)。
  • internal 和 某些面向对象的protected关键字类似,如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的“内部”函数。
  • external 与public 类似,只不过这些函数只能在合约之外调用 – 它们不能被合约内的其他函数调用。只能修饰函数不能状态变量。

→→函数是否改变状态修饰符

  • view—可读状态变量,但不能修改
  • pure—不能改也不能读状态变量,是更加严格,而不是与view相反

→→payable修饰符

可以理解成事务,只有被其修饰,函数才有变动账户资金的权利。

→→存储位置修饰符

可以出现在变量或者函数参数前。对于值类型来说,永远是引用传递,而引用类型时,需要参考下面的修饰符来确定是否是引用传递。
  • storage:链上的持久存储的。
  • memory:EVM中的内存,可易失的。不能将memory类型赋值给局部变量(有待考证,因为引用传递下可以改变其赋值)。
示例-2
  • calldata:EVM中的内存,只读的。外部函数的参数(不含返回值),场景多为系统使用。
示例-3
示例-4
示例-5

→货币单位

示例-6

→编译器和开发框架

三种主流的:remix-ide ,solc和jssolc
  • truffle框架使用
https://www.jianshu.com/p/8794afea1996?from=timeline&isappinstalled=0https://truffle.tryblockchain.org/https://www.jianshu.com/p/eac99bb0a9bc

→技巧参考

  • 函数deposit和send的使用
https://blog.csdn.net/tianlongtc/article/details/80220142

有关微信小程序云开发

云开发理念

事实上测试号是不能开通云开发的,反正我本人很早开通的测试号来建立项目就没有云开发的选项,即一闪而过。然后,我就用新的邮箱来重新注册小程序的账号,注意使用新的邮箱,即未在微信平台露面过的邮箱。跃过如下的坑:1,与微信绑定的邮箱,2,公众平台的邮箱,3,开放平台的邮箱。然后,注册登录完,个人用户即可,不用缴费认证的当然有银子除外。设置云开发启用,需要立刻建立一个云环境。再用此账号来新建项目,就可以看到云开发选项了。quickstart就加载了。不得不承认,腾讯是个造生态的专家。而你要想厘清腾讯旗下生态,你要准备多个邮箱呀,至少三,四个。当你用习惯了,你就不会吐槽,反而明白,腾讯生态的用心,即独立又彼此包容。开发者有也appid,测试号也是叫appid却又分工不同。所以坑虽多,但实践更重要。倒不能称为坑,因为,刚入门时,对于场景知道的少,慢慢发现,开发者的appid偏向于项目层面运营和部署,而测试号appid应用更侧重是开发过程中编程和白盒测试。

开发小程序时,专注于业务,不用自建数据库,云函数变共享使用,图片上传API等,国内领先的思维,一站式的开发。

按流量计费的云产品,是专业的,童叟无欺。腾讯不仅懂云,也懂码仔,前端向JS看齐,进入下一代开发,即面向功能的代码片断,健全文档,即用即搬。传承着小程序的用完即走的“酷”。

上手实践

  • 本地的node环境中,需要安装几个包。小程序云开发的本地需要和远程自动默认导入的

wx-server-sdk也依赖三个包tcb-admin-node、protobuf、jstslib

  • 然后是安装CLI工具。这个最强大了,管理你腾讯云上所有资源的命令行工具,你可以想象的场景,应该有部署云函数,推拉静态文件,持续集成等,重点是结合密钥登录和shell脚本的设计,自动化运维永无止境。

npm i -g @cloudbase/cli
功能列表如下:

  • 最好的学习API方式就是读quickstart的代码和修改代码,运行看效果。

开发学习资源分享

资源一
资源二
关联资源参考
资源三

番外篇

本人原想载于知乎,不过,因为我涉嫌给腾讯广告而被禁言,看来,我的影响力已经被知乎“重视”了。同时,也试出了知乎的立场和格局。幸好,本人有个人博客,所以,真心想怼一下知乎—–“你过来呀!!!”

虚机ubuntu下局网搭建gitlab服务器

部署过程:

  • 坑一:当安装了postfix后,发现需要重新配置成internet,使用命令

sudo apt-get install gitlab-ce

然后就是参考过程:

https://blog.csdn.net/discoverer100/article/details/51814171

  • 坑二:本人禁用了先前安装的nginx,把external_url改成了“http://192.168.23.128:8010”,才顺利OK。否则看到的界面有问题,是CSS等资源不完整的显示。此时虽然能有改密码的界面,但不会成功的。如果是想和即有的nginx配合,请参考:https://jingyan.baidu.com/article/6525d4b1b5d89dac7c2e944a.html
  • 坑三:腾讯云把gitlab做起生意了,如果想在上面搞,域名和证书都要理顺,而且会对外界资源有排斥。

用户数据设计:

以下基于本人环境,不用参考。

root下面有codera,coderb,coderc

codera下面建立一个标准项目:bgsvc4hbw

grp4task1下面指定codera是owner(负责人),由root创建组,再邀请codera

此后,codera又建立了一个仓库flowshow用于研究git工作流。

进阶应用:

管理员密码重置

https://blog.csdn.net/weixin_30687051/article/details/97273880

工作流学习链接:

https://blog.csdn.net/qq_32452623/article/details/78905181?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

小结一下,gitflow的心得:

1)feature都是起止于develop分支(回归develop时使用:git merge –no-ff)

2)hotfixs是起于master,止于同时推给master(打tag且尾号加1)和develop(回归方式cherry-pick)

3)realse是起于develop,和hotfixs永远不发生关系,止于性质与hotfixs相同,但区别tag是前一位版本号加1。同样不使用merge来回归develop

4)对于master外的发布,可以根据环境灵活建立分支,比如一平台一分支。

5)tag一般不会隐式推送到远端,所以,可以只选择大版本来显示手工命令推送。

https://blog.csdn.net/github_27263697/article/details/79563949

备份和迁移

https://blog.csdn.net/qq_40907977/article/details/106756999

go与qt的新酒老瓶

前言

只所以说是新酒老瓶而不是新瓶老酒是有用意的。

因为QT是器,老瓶,出来时配合着C++的。而如今go来势凶凶,自然英雄所见略同。

两大开源神器,跨平台开发,终将双剑合璧了,让你如虎添翼。

过程记录如下

安装QT

→参考指导:

https://www.cnblogs.com/haijian/p/12417129.html

本人使用/usr/local/qt为QTDIR。5.12.10

安装go

→参考指导:

https://blog.csdn.net/icanx/article/details/91438450

→配置go env国内源

liteide源码编译安装

→参考指导:

https://www.cnblogs.com/7explore-share/p/5838281.html?utm_source=debugrun&utm_medium=referral

出现了模板路径报错,于是使用tarena环境,但是root账户,先安装两个包,再改脚本后,编译方成功。

https://www.cnblogs.com/liaojiafa/p/12798025.html

实在是经典解说:

→针对windows平台

在此时需要安装mingw64做为前提,不然liteide就是水土不服的。必要时关闭360吧!

mingw64实是难搞,换了几个工具,如mingw installation manager,最后用mingw-w64-install.exe
启动后选择版本,posix和seh,这就生成了安装目录。
在安装过程中,把此前下载的源码包压缩包“mingw-w64-v8.0.0.zip”重新命名为“x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z”,放置在默认的目录中“x86_64-8.1.0-posix-seh-rt_v6-rev0”
最后,把安装的路径
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
放到系统环境变量中。万事大吉。gcc,g++一应具全,随处可用。

GO111MODULE在windows上是没有auto可设置的,即便你使用liteide设置了,但go env中实际还是当它为on。

所以,系统底层仍设置为on,GOPATH目录内的源码编译成功,无论是否有go.mod。但要是GOPATH目录外的拥有go.mod文件(这是通过go mod init src生成的)可以编译成功。

当设置为off时,同时也得让GOPROXY为空,这时GOPATH和有go.mod的外部目录都可在命令行编译成功。所以,建议你还是使用命令行吧,因为,同一代码在命令行和liteide中结果不同,并且,保持on状态,保持代码不在GOPATH中。相信,go的发展也是会弃掉它。

→针对linux平台

GO111MODULE可以被liteide设置成auto.

这样设置的好处是模糊使用GOPATH(任何设置都OK)。而无论要编译的源码在任何目录都可以,且不用设置go.mod。

前台qt后台go起步

→参考指导:

环境:https://github.com/therecipe/qt/wiki

→therecipe/qt包的安装

先go get -u -v 不行就先下载,然后改名适配到代码中包引用的相应GOPATH中,然后再安装命令工具即cmd中的…。

重要是认清go get的本质就是一种git clone的包装。

go install  /home/tarena/code4DN/learn_gopath/src/github.com/therecipe/qt/cmd/...

不出意外是报错的,但看下面的解决问题内容。

→解决go端的环境的问题

https://blog.csdn.net/wzw_mzm/article/details/77618922

出现“找不到 golang.org/x/mod/module”问题,后来手工下载了golang.org/x/下面系列仓库,就是 git clone.

git clone https://github.com/golang/mod.git 
git clone https://github.com/golang/xerrors.git 
这是两个新加入的,一般没有它,已经可以运行demo.最终的完整支持包如下图

原始网上下载运行demo的命令如下,

go get -ldflags="-w" github.com/therecipe/examples/basic/widgets && $(go env GOPATH)/bin/widgets

它会直接运行一个弹出窗口,相应后台的操作是拷贝了代码并编译放在GOPATH/bin中,再运行。
本人已经下载过therecipe/qt包了,就是对应GOPATH下的

github.com/therecipe/examples/basic/widgets/main.go

→解决QT端的环境问题

以上集齐了龙珠。这里是锦上添花,因为,要充分使用QT的伎俩,就需要一套工具。
这时再次执行命令

go install  /home/tarena/code4DN/learn_gopath/src/github.com/therecipe/qt/cmd/...

命令成功使用之后

goqtuic的安装

go get -u -v github.com/stephenlyu/goqtuic

事实上没有这些工具也可以运行demo或QT库的代码。只要thericipe/qt包具备了就行。

总结跨平台

不管是windows还是linux下,都要在GOPATH/src下具备github.com和golang.org。前者里面有therecipe后者里面有x。同样的代码,都用Liteide编译,本地化成各自系统的风格。

静态库的go调用:(用GO来唤醒C的各种沉睡资源吧)
https://www.jianshu.com/p/b3fb41d7c33f

附录:

  • qtsetup会把qt的相应源码下载放置在go源码旁边,如果你有了mingw和gcc,它都会编译成静态库(.a的文件)给你。go帮你丰富环境真是全方位的。如果你是单独完全安装的qt环境,此处可以省略。很久以前,静态编译成window平台的QT库让你累疯,但现在mingw和go,让你永远不碰那个步骤了。
  • 翻墙参考:https://www.cnblogs.com/hupeng1234/p/9727170.html
  • qt如果要调试或用其它QT版本,有几个需要的环境变量比如QT_DIR。

刍狗的由来

不必说,老子的“天地不仁,以万物为刍狗。圣人不仁,以百姓为刍狗。”想必都听过。
但理解它,却不是很容易。需要先从刍狗下手。

刍狗,就是祭祀用的草编的狗,刍读chu二声而非zou。“刍狗”就是扎草为狗形,疾疫时用于求福禳灾,此时要文饰妆扮一番。祈祷之后,侍祭者可享用祭品,而刍狗即便弃置,人踏车轹,随后就将它当做柴草,一烧了事。我们看汉、魏、晋文献中的记载,就可以明白。《淮南子·齐俗篇》说刍狗和土龙刚刚做好的时候,用青黄色来文饰,蒙上绮绣,缠着红线,尸祝穿着纯黑色的祭服,大夫戴着礼帽来迎送它们。等到用完之后,土龙不过成了一堆土壤,刍狗不过成了一堆草芥罢了,有谁看重它们呢?用时显贵,用后废弃,天地万物,莫非如此。
有了刍狗的基础,于是整理出三种对老子言的理解,如下:

1)天道任自然而已,并不加惠于物。而万物各自有所用。只是让万物如刍狗那样走完自己由荣华到废弃的过程而已。
2)天地滋养着万物,不会说自己多么仁厚,不求万物用草扎成的狗来表示祭拜他。所以天地不言仁,不争仁,滋养着万物,不求万物回报他。人也应该有此仁。
3)天地之间找不到仁,是因为万物都成了没有灵魂的草扎的狗。圣人也找不到仁,是因为百姓都成了刍狗。所以,后面“多言数穷,不如守中”听多了仁的说法,不如心中守仁。

其实理解的关键在于“刍狗”的词性。如果是中性词使用,那就是一个祭祀用的物品,和土龙一样。那就是天地和圣人都不要求仁厚。
如果是按贬义来使用,那就是第三种理解,有悲观和绝望的成分。而如果“刍狗”是一种比喻手法时,就是万法自然的取义了。
本人倾向于第二种,因为,老子习惯于“名词动用”,你一定听过:

上德不德,是以有德。

此处的不德,是指不要求德行(动词),于是推论,天地和圣人的不仁就是不要求仁的行为。

☼☰☾T

看文章题目一定比较困惑,因为是加密文字。
其中有乾卦和英文,这样再看意思就变成:

日乾夕惕

说到这里,已经有人可以读出整句了,国学易经中有云:

终日乾乾,夕惕若,厉无咎。

出于乾卦的动爻九三,意思是:君子,终日都勤奋努力,积极向上,到了晚上便思考明天并预测可能的变化和应对之术。这样以来,虽处危境但没有毛病。
这里有值得玩味的地方,有人认为断句是分歧,分别是:

“夕惕,若,厉,无咎”和“夕惕若,厉无咎”

对于不同的断句,解释就会有不同。九三爻有人认为是暗藏凶险的,所以,这些人把若不解释成好像或者可能,而是变成人称“你”,这样看来
意思变成:“夜晚要警惕,你,仍处于危险之中”。
九三爻的象辞说,君子举止言谈因忠诚而进德修业,能够洞察秋毫,能够高瞻远瞩而守业。是故,居上位而不骄,在下位而不忧。这就是对断语“无咎”的解读。

美国大选之殇

美国总统大选秀,历来就不少内幕和交易。当年戈尔与布什,票差分毫,闹到法院,也是有人息事宁人,有人欺世盗名。
古有姜子牙80挂相,今有拜登78中总统。事不过三,老骥出山。
上德不德,是以有德。美国的总统们,内杠还是打仗?
路透社的一篇报导说密歇根一位民主党母亲宣布将把票投给特朗普以后,她21岁的儿子宣称“你不再是我妈”;
而在华人聚集的微信上,意见相左的人们正在用最恶毒的中文互相问候着对方的祖宗。大选开始,就有人要移民加拿大,
现在摇摆州又有30万张选票不翼而飞。
还有疫情呢,还有四年后还这么选吗?对了,咱就是看热闹不怕事大的。

附赠段子:

川普一直焦急地等消息,一位朋友劝他早点睡,说:“拜登啦,等也是拜登。”
问:这位朋友最可能是什么人?
A,一位共和党朋友
B,一位民主党朋友
C,一位河南朋友

IT技术前瞻

思索一些值得提前储备的技能。当今比较高速发展的方向不外乎是:人工智能,大数据,云计算,区块链。这些曾经的前瞻性技术已经悄然来到了我们身边了。然而,技术种类虽多但彼此推动和配合是相当密切的。本人根据生产三者的思路略分析了一下:

技术选型 生产三者
人工智能(AI),云计算 生产力
区块链 生产关系
大数据(分析/安全算法),物联网(IOT) 生产工具

事实上,未来的物流行业需要创新的价值点是生产力和生产关系,即AI和区块链。生产力是硬核,生产关系是降本增效。要想拥有竞争力就要在这两点来发力。虽然应该考虑技术变动和发展完善或成熟的因素,但行业的趋势是明显的。地灾数据的分析挖掘或多式联运一旦成立,都要求更多先进技术的支撑。即便是找外包和与互联网公司合作,都要能有更高的视野和与其它公司对话的基础。

多式联运应用区块链的十大理由

  • 物流追踪基础—货物追踪场景,并不是空间位置层面而是业务流程方面,每笔账都会记录清楚。
  • 边际成本为零—更多承运人加盟,更多交易支付环节也无成本的线性累加(成本包括线上和线下)
  • 会计前置清算—公司不收取客户垫付资金,规避了风险,实时清分结算,这是非常吸引客户的创新和特色,保证了客户资金链运转正常。
  • 多方共识制度—联盟中业务流中可以设计决定谁拥有记账,交易选举权,审查等的权利。角色合作分工,资产管理透明,管理成本降低。
  • 智能合约灵活—具体承运人与上下游承运人交接业务等管理场景。
  • 技术门槛低廉—代码和算法都开源,如果合作商已经有摸索拿来用,整合资源合兵一处。
  • 新兴技术跟随—对人工智能,物联网和大数据等维度上的新技术可以采取跟随战术。
  • 业务边缘扩展—在链上慢慢扩展和分支到相关领域链,比如保险,公益。
  • 课题建设先机—我们可以借此来申请课题,产学研一体。
  • 设币激励制度—对外合伙货运司机积分,以及对内员工的激励。在股份,期权无法刺激员工前,在链上引入币后,可以在公司激励制度设计上合理创新。

华山论剑之编程语言

风云再起

有人的地方,就有江湖,有码农的地方,那里就有编程语言的分争。

二十年前,中国90%的程序员=写C语言的人。编程语言三分天下。
而现在,井喷一般出现了300种编程语言。主流圈子里有一个鄙视链的。科普BSL的意思:具体是无非是看英超的瞧不起看德甲的,看德甲的看不起看意甲的,看意甲的当然受不了看中超的,也许他们都看不起中超。
所以,编程语言中搞与机器语言关系近的就看不起底层的,底层就看不起表示层的,他们也有共同点,那就是看不起用HTML开发的。
有人说“Java天下第一”就有人跳出来“PHP是最好的语言,不接受反驳!”
江湖险恶环生,你看不起kotlin吧,可是全面兼容了java这个靠山,扶摇直上三千里。
Java帝国在Web编程领域受到了PHP, Python, Ruby 持续攻击, 被搞的灰头土脸, 但是帝国的基因和运气实在是好, 竟然又搭上了手机开发和大数据快班车, 成功开辟了新战场。

C语言显然沉寂很久了,它的“徒弟”们在圈里横行霸道。
尤其是C++,python,js,java,php。割据兵器谱,叱诧TIOBE。
注:TIOBE是一种开发语言排行榜,“兵器谱”会定期更新。类似于福布斯一样。武林大会盟主之排位实在是行业的风向标。

高徒列传

如果说自古功夫出少林,那么编程语言出于C。

看过《黑客与画家》想到,如果从绘画角度来论编程语言:
C,是用点线面,黑白灰的造型能力,代表作都是素描或中国画.工具包括铅笔(笔),橡皮(墨),白纸(宣纸),简单吧.
C++,是水彩图,你可以用大小不一的毛笔,和N种颜料的调色板了.
java和c#等后续语言,让这里创作变的多元化了,油画,版画,工艺画,工具则变的有了更多种。
python的话,就打开新时代的艺术创作了,当今天的漫画家和插画家,全面应用数位板,压感笔,配合photoshop,批量引入各种素材资源。

→远去的神话–C++

学完C++的人,很少说自己精通
网友A:“吃完自己收拾的是C++程序员,留在桌子上等别人收拾的是Java程序员。”

越早的语言,对内存的使用越要严格.
举例来说,越往古代,礼法也越多.
平辈,长辈之间说话,称谓和废话很多.
会交际的人,一定说的废话是最多的.因为,交际是起于废话的.
“您吃了”,”天气不错”,”最近工作顺利吗?”
可是,这些话就像是c/C++里的,free,析构函数,*pch_XXX=NULL;或空语句等.
在编译器面前,少了如上的这些”废话”,系统就像严厉的长辈(相当于你的太爷在世),让你吃不了兜着走.
做个”懂礼貌”的程序员,会让你写的代码更安全.

→闲话python

人生苦短,我用python

足见coder对它的喜爱,现在玩点什么高大上的都需要这个“神奇胶水”。这条蟒蛇伏在系统中等着你的招呼。
他已经观察了系统很久,也观察了你很久。你准备好粮食和水(第三方模块的安装),然后,启动它,让他出洞或入地掘金或飞上九宵。python没有复杂的“礼貌”和喜欢挑细节毛病的编译器。
王朔说:

第一个人说的,叫“知识分子”。第二个,第三个,还有不知道隔了多少代隔了多少辈,俗称“八杆子打不着的”,都叫“知道分子”。

中国春秋时期的诸子百家,早已哲学过了,做人做事,出世入世。中国一部分孔子门生,一部分老子影响。自然科学发展到今天,奇点邻近,突破太难。
程序员们,扪心自问,你知道了些什么?用android开发app,用框架开发应用。你知道的是什么,只是一些工具和名词。又有多了解android的底层和框架的内部组织?又或者说,你是否有必要去知道?
软件开发中算法更是,一将功成万古枯。所以,事实上留给你的区域很有限的,可能有人认为我比较消极,但发现比发明越发重要,那么坐上python,让你随时引据经典,前人或者牛人的知识总结打包放在你面前自助pick。

→java帝国

说它不好,会被吐沫淹死。
是造生态的专家,短板很少,简直是无所不能。
排行榜几乎没跌出过前五,大厂喜欢,大牛们天天用。

本人读书时,专业课程的最高分就是java,那时做Web就是用JSP,封装就是EJB。做企业应用方向就J2EE,移动方向J2ME。
而现在你如果列java的应用框架,可以有一大箩筐。
各招聘网站上,铺天盖地的关键字与java有关。

后浪的诞生–golang

不管如何,有一款打破BSL的,把链变成环的那就是golang。
听过新闻说,golang打算用go写编译器,即“排除掉C的代码”也称为自举。而且有很大的进展。
这让C很不舒服,的确有些“欺师灭祖”之嫌。这也是我的原始想法。
golang在见过林林总总的或高级/低级,或强类型/弱类型,或表示层/后台层,或编译的/解释的的语言后出生了,老爹是google,吸引众家之长为了是取代C++。辅佐大臣是docker,以太坊。
任何的新生语言如果没有以下的特征,就没有生命力,甚至相当于直接流产:(不讨论小语种,G=golang)

  • 开源
  • 拥有GC(C的法律允许它的臣民直接操作内存,执行效率极高,但是又对内存分配回收不管不顾,全部扔给子民们去处理。人生苦短,别浪费岁月在回收内存垃圾上了)
  • unicode编码支持(G默认是UTF-8)
  • 一招鲜(如果非要让G突出一点,那么绝对是为“并发”而生)
  • 拥抱互联网以及融入现有的生态(如果互联网的安全是“地气儿”那么G可以接上,君不见,玩云的公司也都玩G)

以上几点G做的相当好,再一起简单吐槽一圈“前浪”吧:
吸收着python语法特性的营养和解释性运行的特技。python说自己性能高,G就笑了!
见过java的繁重JVM和编译器,G就有了GC和不依赖三方的开源编译器,别忘记java的编译器还在oracle的手里。
C++哈,你终于来了,python可以笑你没有语法糖,java可以笑你没有手机和移动互联网,而G不说别的,你听过协程吗?
这时台下面举手的还有一大波儿想举手发言,什么js,php……,enough!今天的发布会就到这里。

→与C互访

简单就是美

为此G不屑于C++的花式包装。让全世界的G代码,看起来都是自己写的。
就目前来讲,调用C的最简单方案绝对是G。这便是C的基因。

原理:https://www.sohu.com/a/306764682_100111840
编译的时候会在PATH中寻找gcc,这也说明G事实上可以嵌入汇编语言

G调用C实战:

→敌我不分还是反朴归真

好吧,骂声之后,冷静下来。另一个维度升起。
近十多年,从未看过在一种“徒弟”语言中那么的尊重C这位“老师”。
所以,PHP,python,java等跳出来攻击G时,是一种狭隘的自我保护。
G才是那个能让师傅荣光焕发的,误解它的原因,可能是他太过出色,光环已然超载了老师。
他更适应这个时代,是未来一段时间内开发语言的“新宠”。