博客

逆流而上:从政府大院一步步走向四川大学

作者:李登淳

我们这一代人被称为“千禧宝宝”,一出生就处于一个十分优越的环境中:我们的父母大多数都接受了良好的教育,国家经济正享受着改革开放的红利,我们中的很多人都是独生子女。

在这样一个时代背景下,我们在享受着父辈未曾享受过的资源同时,也面临着比父辈多得多的诱惑和陷阱。

我出生在地处城乡交界处的一个政府大院中,父母是很普通的国家公务员,都接受过高等教育。由于国家政策的限制,我父母只能养育我一个孩子,所以我是从小集宠爱于一身的独生子女。大院里的孩子情况多数与我相似。虽然我们和城里的孩子都属于独生子女,但包括我在内的大院里的孩子与他们不同:我们从小接触不到千奇百怪的社会环境。

我们的世界就是大院,我们在能够独立出行之前从未自己踏出过大院的大门,当然这也让我们这群孩子和所属的家庭免遭非典的伤害。因为那个时候母亲在另外一个不远的政府单位工作,所以非典将我和母亲隔离开了好一段时间,那时候不知道啥是非典,只知道不能见到母亲了。这也导致了我在具体查询了非典相关资料以前并不知道我小时候爆发过这样一场灾难。

后来我大了一些,父母开始带着我去院外的农田里玩,摘麦穗,挖野菜,捉虫子。记得那个时候的天还是蓝的,晚上还能坐成一圈围在大院操场上数星星。我们一群孩子在整个大院里玩捉迷藏,玩飙自行车游戏。家长们都互相认识,在那个夜不闭户的小院里从来不担心我们的安全。夏天热了我们就去买雪糕的奶奶家买几只小布丁,大概只要五毛钱。

就这样我们在大院的庇护下小学毕业了。

父亲中专时学的是计算机专业,所以他对于我偶然间造访他办公室时对电脑展现出的兴趣进行了一些引导,送给我他曾经的教材。我便使用那几本被父亲翻的泛黄但依旧整洁的旧书进行了计算机相关的启蒙,从此便一发不可收拾。

初中时我到了隔壁教育更发达的城市读书,住在爷爷家,父母每天晚上乘坐单位的班车到爷爷家照顾我的生活。后来爷爷奶奶为了方便我读书搬到了叔叔家,从此爷爷家成了实质上我们的新家。我正是从初中开始比较系统的学习计算机相关知识,买了很多这方面的书籍,包括硬件组成和维护以及比较简单的CMD脚本等。父亲的好友是单位的信息管理员,得知我对这方面感兴趣便放我到单位的废旧硬件仓库里玩,我硬是在里面拆拆装装淘出来三四台电脑,这也为我后来学习编程打下了坚实的基础。

初二春节的时候在书店里偶然看见了一本Accelerated C++,当时刚参加过学校的科技展,其中就介绍了C++,于是我毫不犹豫地买了下来,开始自学C++。经过近一年的摸索我在初三时取得了一些进展,开始写一些简单的小项目,现在看来都是玩具级别的东西。当时因为父母管教比较严格并没有智能手机,又因为小时候不知道网吧这种东西所以一直都是有什么问题自己烧脑解决,然后回家之后在简陋的小平板上一点一点打进去调试练习。这也让我养成了有问题先自己想方设法解决的习惯以及不依赖IDE进行编程的习惯。

初三时同时发生的还有另外一件事:我们的班主任兼数学老师发掘了我的潜力,鼓励我自学数学知识并尝试自己解决困难的数学问题,然后在讲台上给同学们讲解。可以说我的这个班主任彻底的改变了我的性格,让我更加自信,培养了我独立探究问题的能力和教授知识的能力。

同时我也得以逆转不断下降的成绩,成功考入市重点高中。

进入高中,首先是毛遂自荐第一次当上了班长,在高一班主任的培养下逐渐熟悉了团队管理的一些技巧和注意事项,同时也磨练了我桀骜不驯的性格。但真正再一次改变了我的性格的是不久后的一次车祸:我为了躲避行人不小心使自行车前轮刹车抱死,头部受到严重冲击摔在路边不省人事,被同学看见帮忙打了120送到医院抢救。完全恢复意识时大概已经是一两天之后了,上身插满了心肺监护的探头。

还好我命大活了过来,只是头骨骨裂,颅内出血量又恰巧躲过了头部手术指标,除了口腔里因为碎裂的牙齿划伤缝了几针之外没有其他外伤。被捆在病床上一个月后腿部肌肉萎缩到几乎不能走路了,我又在父亲的帮助下重新站起来学会走路。在病床上的一个月里,除去前半个月几乎都在睡觉(恢复神经),剩下半个月就是在病床上思考人生。父母因为这场事故濒临崩溃,痊愈后再也不对我的学习加以期望,用父亲的话说,孩子能好好的活着就满足了。

真的感慨父母永远是背后最坚实的依靠。

因为这个事我在做事风格上要收敛了不少,开始做一些实事。出院后第一件事就是在各方的支持下向校方提出申请建立了计算机社团,这中间又经历了好多波折,但年级主任最终扛不住我的软磨硬泡同意了。然后就是热火朝天的宣传,招新,闹得整个学校沸沸扬扬,我最高纪录大概是给上百人同时讲课。社团在我高二时达到顶峰,学校划给我们一个废旧机房,我组织学生打扫了一遍卫生然后扯上了网,在一堆旧电脑里凑出来几个用,在这里我得以大量的编写代码,我这边编写出来的程序立刻就有几十个学生帮忙测试,形成一个十分良性的循环,在这种需求驱动的开发模式推动下我接连完成了CovBasic的开发和CovScript开发,后者成为我中学时期编写的规模最大复杂度最高的程序。

高三时我渐渐退出社团日常管理,但依旧掌握大局,偶尔还是去机房写一些程序。在此期间我带的一个学生获得了我们社团成立以来第一个省级奖项:NOIP二等奖。由此为契机我推动了学校官方竞赛班的创立,但由于有了竞赛班加上高三学习越来越紧张我分身乏力,社团总体开始走下坡路,到我毕业时已经名存实亡了。

同时另外一边,我母亲注意到了四川大学等一些985高校有不需要各大竞赛奖项而且最高能够降一本线录取的优惠资格——我大概能达到的分段,开始为我筹备自主招生事宜。我母亲的上级领导的女儿前一年刚刚通过自主招生考上了北京师范大学,所以他便将相关资料和经验交给我母亲,我母亲在其帮助下顺利帮助我完成了相关准备工作并顺利通过了四川大学的自主招生复试资格。我根据我自身情况高考前一个月向父母和班主任提出回家自学,在充分交流之后他们倒也是十分开明的同意了我的请求。最终我十分顺利的在高考中超常发挥取得了超过一本线5分的成绩。

为什么说是超常发挥?因为我考前焦虑症虽然没体现在精神上,却异常导致了阑尾炎的发作,我考试两天都是在疼痛中渡过。考完之后几乎立刻病情就得到了缓解,高考之后立刻就赶到成都参加四川大学自主招生复试,我竟然吃了好几天麻辣火锅都没有任何问题,后来一直阑尾都没有任何复发的迹象。

当然了,复试的时候由于我拥有十分丰富的演讲和教学经验,应付面试毫无压力,顺利拿到了直降一本线的录取资格。不过还得说一句,感谢段院长的赏识。

回看18年的成长历程,总体是非常顺利且特殊的。我一直在说,我用我自己的经历证明了,任何努力终究不会白费,但付出努力的同时必须要抓住机遇。有人可能会说,我只是幸运罢了,其实并没有这么简单。的确很多事情我非常幸运,但事实上幸运在不断的降临在每个人身上,只是他没有发现并加以利用罢了。我觉得我的经历给我的最大启发便是千万不要过于功利的为了一个短期的目标而奔跑,成功的关键在于向着一个足够远大且真实的目标付出持续而坚定的努力。我的理想是建立完整的中国自主研发软件生态,所以我在这条漫漫长路上不断地积累,不断地努力,而能够进入四川大学就读只是一个阶段性成果罢了。

那为什么说我是“逆流而上“呢?

很明显,在大家都疯了一般在学校里参加各种模拟测试时,我回家自学;在大家都去网吧,打游戏,谈恋爱,追电视剧时,我在写程序;大家都在参加各种比赛拿证的时候,我在社团泡着写程序;大家都在使用成熟框架写程序时,我不厌烦的去尝试自己实现基础功能。我看起来是最傻,最Low的那个臭屌丝,整天沉迷于好像没什么用的程序里,最后却比大多数嘲笑我的人跳的更高。

那为什么逆流的人很少能攀的更高呢?

逆流是一个非常危险的行为,如果把控不好方向很容易走歪。都听说过“博观而约取,厚积而薄发“,却很少有人懂得其本质。现在的人都太浮躁,被大量的毒鸡汤洗脑,希望能一夜成名。尤其是我们的同龄人和后辈,被现在一些不良之风带坏,梦想通过当网红打电竞一夜暴富,过上衣食无忧的生活;或者希望几年,几个月,甚至几周就精通一门专业技术,快速实现自己不切实际的梦想。无论是什么事,没有厚积,哪来的薄发!如果怀揣梦想,一定要脚踏实地的一步一个脚印去实现它,戒骄戒躁,才能有机会去实现它。

最后,任何一个人的成长道路都不是完全相同的,一定要结合自己的实际情况,选择适合自己的道路,并坚定的走下去。我相信任何人都能够逆流而上,活出自己的精彩。

谨以此文,纪念我18年的成长历程,送给我的学生,我的学弟学妹,我的后辈以及我自己,希望能够给更多的人启发而走出自己的道路。

为什么要学习Covariant Script

经过将近两年的发展,Covariant Script可以说是一个比较成熟的编程语言了。如果不追求一些先进的语言特性,Covariant Script能够满足编写程序的大多数需求。

目前而言,Covariant Script拥有以下优势:

  1. 动态类型。当然这不仅是Covariant Script独家的优势,但对于一门脚本语言而言是一个非常方便的设定。我个人是不希望在写点小程序时和类型纠缠个不停。
  2. 强类型。这当然也不是独家优势,但结合动态类型能够保证类型安全。事实上Covariant Script中可以说是不存在任何形式的不安全的隐式转换,隐式转换也很少,又能省不少事。
  3. 语法清晰无歧义。虽然一堆人吐槽我的语法不好看不符合基本法啥的,但我个人对于这一套语法是蛮满意的,至少没有歧义。虽然end神烦,也总比if…fi和Tab强吧。至于C-Style的花括号,不是做不到,但以我的教学实践来看,少写花括号的情况比少写end更常见。
  4. 有比较完善的标准库。基本上啥都有,啥都能干。基本上如果你不需要重新实现一个Covariant Script都够了(其实自举也是没啥问题的,就是麻烦点,感兴趣的朋友可以试一下)。
  5. Bug少。这个当然是一定程度上的自嘲,毕竟当初Covariant Script可是天天有Bug能修,现在都闲了好几个月了。不过核心寥寥几万行的小项目能有多少Bug呢?但我想应该也比大多数个人开发者开发的语言更可靠了。
  6. 最后不敢单独提的几点,包括跨平台(烂大街了,一堆Java实现的语言有天生优势),与C++的交互比较简单(用户群不关心),性能好(只是在没有平台优化加成的情况下比Python好而已)

我设计Covariant Script的目的就是尽可能降低使用程序解决问题的门槛,也就是那句Slogan:让编程变得更简单。这不仅是针对初学者,对于熟练者而言也能降低很多与语言特性本身纠缠的成本。当然仅用Covariant Script写大型程序或项目是不太现实的,毕竟在这个时候脚本语言的优势会全部转换为劣势。对于大型程序和项目,开发者可通过使用Covariant Script SDK打造属于自己的脚本体验,这一块的文档暂时缺失,感兴趣的朋友可以联系我获取帮助。

联系方式:

QQ: 2943407092

微信: mikecovlee

电邮: mikecovlee@163.com

Covariant Script编程语言:让编程变得更简单

下载链接

请确保您的操作系统为Windows XP或更高版本

不推荐继续使用包括Windows XP在内的32位操作系统,Covariant Script将从2019年起停止支持32位操作系统,推荐使用最新的Windows 10 64位操作系统

除Windows 10操作系统之外的Windows操作系统运行CovScript GUI和CovScript Installer需要安装运行环境

运行环境(Microsoft .Net Framework 4.0)

在线安装器(推荐)

注意:除Windows 10操作系统之外的Windows操作系统需要运行环境!

离线安装器

CovScript源部署器

独立程序下载

CovScript
CovScript x64
CovScript GUI
CovScript x64 deb安装包

文档和示例程序

CovScript 在线文档
CovScript 示例程序

发行说明

CovScript
CovScript GUI
CovScript Installer

简介

  • Covariant Script编程语言是李登淳(Michael Lee)于2017年初设计的一门通用型高性能脚本语言,其官方解释器由李登淳本人使用C++编程语言编写。
  • Covariant Script的目标是成为更加友好的“C With STL”,即综合C编程语言简单明了的语法和C++编程语言强大的标准库,从而最大程度降低语言本身的难度的同时提供强大的功能。
  • Covariant Script支持大多数主流平台,包括Microsoft Windows,Linux,Mac OS,Android等(Covariant Script理论上能够支持任意提供了标准C++实现的系统中)。用户只需编写一份代码就能够在世界上90%的设备中运行,实现“Write once,run everywhere”。
  • Covariant Script是动态类型语言,类型这个概念在在Covariant Script中被大大弱化,因此它不需要模板和泛型等特性也能实现灵活的程序设计风格。但因为Covariant Script拥有严谨的类型系统和可靠的垃圾回收器,从而保证了类型安全和资源安全。
  • Covariant Script的语法融合了C/C++/Java/Lua/Basic等主流编程语言的语法,保留并改造了一部分易于使用的语法,删除了大量难以理解的部分。精简融合的语法仍然保留了现代编程语言的组成要素:模块系统,名称空间,垃圾回收器,异常处理,面向对象编程(OOP),Lambda表达式,基于范围的for循环等。
  • Covariant Script拥有强大齐全的标准程序库,并为其精心设计了可靠,易于使用的接口和完善的文档。Covariant Script标准程序库囊括了字符串处理,正则表达式,套接字,数据库,图形库,系统API,流式API,关联容器,顺序容器,离散容器,数学运算,随机数引擎,高精度计时器等一系列实用的功能。
  • 得益于优秀的架构和作者丰富的开发经验,Covariant Script非常易于扩展。精心设计的类型系统理论上可支持C/C++中所有的类型,您可能只需定义一些特定的函数即可让您的类型在Covariant Script中自由穿梭。作者为了强化Covariant Script与C++的联系,简化第三方库移植的流程,特意设计编写了CNI(C/C++ Native Interface)。通过CNI Covariant Script将能够直接调用大多数C/C++中的函数(不支持模板函数和重载函数,这是C++语言的限制)。用户无需做太多工作,只需将函数直接注册到Covariant Script中即可,CNI甚至能够自动检测函数签名并适配。
  • Covariant Script的模块系统分为两部分。一部分是C++编写的扩展,由于脱离了Covariant Script的环境一般来说性能更高,也能够更好的利用底层API。Covariant Script能够动态加载扩展而无须重新编译Covariant Script自身。另外一部分是Covariant Script编写的包,包的特点是更加灵活,依托于Covariant Script跨平台的特性包不需要编译,在不同平台上一般来说是通用的,但性能受语言本身限制不会太高,不适合计算密集或底层的应用。Covariant Script能够在独立于主程序的沙箱中编译解释包并通过模块系统引入到主程序中。
  • 综上所述,Covariant Script是一门全能的编程语言。“麻雀虽小,五脏俱全”,几乎涵盖了计算机程序设计中大多数概念和功能。但它比C++更简单,比C更全能,比Java更轻巧,比Python更灵活。Covariant Script解决了C++语法晦涩难懂,开发环境搭建困难,第三方库安装过程繁冗,跨平台困难;Java运行环境太大以及Python语法不自由的问题,为入门者提供了更简单的开发环境,为开发者提供了更灵活的开发体验,是目前国内由独立开发者开发的编程语言中功能最完全,综合体验最好的编程语言之一。