首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

我的编程经历,从天桥地摊Basic到西藏阿里的.Net AOT。(一,从井到Sharp)

编程知识
2024年07月31日 13:10

撇清一层歧义:标题中的阿里不是指阿里巴巴集团,喜马拉雅也不是指那个做音频频道的公司,文中所及内容以及我本人都与他们没有任何关联。依照地理正式名称:阿里指的是西藏西部阿里地区,喜马拉雅指的是青藏高原地球最高山脉。 

从前我在博客园不叫这个名字,今天很多自己的早期文章我都屏蔽了,这些系列作为回忆形式,再回博客园来发布,这里没那么多事。我的编程经历都是不正规的游击战,不具备参考价值,正式职业是喜马拉雅自然风光摄影师,作品发表于国家地理、星球研究所、Getty Image,编程是众多兴趣爱好之一,编程风格和技术选型随心所欲,属邪门歪道,与正规院校编程专业价值观违背,请勿仿效。

这个系列分为三篇,在第三篇连载完成时,会同时发布一个最新的基于AOT的项目。

  • 一,从井到Sharp
  • 二,安纳普尔那的雨季
  • 三,喜马拉雅山中的AOT

 

一,从井到Sharp

 

1990年, 小县城邮局门口书摊, 这一期的《少年科学》说了一个故事:70年代的美国车库里诞生了很多公司, 那是计算机崛起的年代, 在硅谷经常有一些技术青年聚会,有搞无线电的,有搞民间军事技术的,有自制计算机的, 通常都是一个做技术的和一个搞投机倒把的组合,创造了后来的新时代,其中, 一对叫比尔和艾伦的组合, 还有一对两人都叫史蒂夫的组合。这一期杂志说了比尔和艾伦一边写basic,一边创建了新时代的公司,于是我越看越觉得有趣。 (另外那两位史蒂夫的故事,十年后才在另一本书中得知更为精彩) 

1994年,小霸王学习机, 附带有一本非常有价值的说明书,很厚的,说的是basic语言, 但是当时没有能力看懂,大家都说这是“电脑”的语言, 当时不叫计算机, 而是叫电脑、 脑! 我打 print  "helow" 的时候,它给了我期望的回答, 然后我想当然的打了一个 print  "what's your name?" ,它却没有给我期望的回答。那么这样一来,好像这个电脑也就是个大型计算器,比尔就是个卖计算器的,只不过把事情搞得稍微复杂一点,看起来更高级一些,就来钱了。 (basic的打印命令是不是叫print,现在也想不起了。但是这个 what's your name, 直到16年后才由 siri 给出了回答)

1995年,《电子游戏软件》做了三期连载,叫《世嘉五代与超级任天堂的对比报告》,有一个作者投稿反常识的说到世嘉五代要优于超级任天堂(第一期他赢了,第二期一位辩方把两者提升到中立,第三期另一个辩者终于把他披得体无完肤),三篇文章两个作者在技术方面都相当专业,说世嘉五代是用C编写游戏, 超级任天堂用汇编语言编写游戏,于是重点就是:我知道了专业的编程语言有C和汇编两个东西。 好像大型计算器的说法也不对,还是有点东西在里面的。

1996年,我在桂林新华书店买到一本书,叫C语言程序设计,16块钱,那时候一碗粉5角钱, 可以吃32顿。 终于可以见识一下什么叫C语言, 原来有常量、变量、指针、指针的指针 这么几种概念,语法也和basic不一样, 苦于当时电脑比毒品还贵,没有条件上机实践,后面的结构、循环 等,难以理解和体会,没关系,脑子里面有了点概念指针可以用少的东西操作多的东西,有很多一般人看不懂的符号,和电影里看到的那种有点像,这叫高级货。  

陆陆续续的,在1997-2000年间,各地都开办了电脑游戏室,那时候不叫网吧,没有网, 就叫电脑游戏室,玩的是局域网红色警报联机,我经常逃学,并且教唆同学和我一起过去玩,一去就是整个宿舍,通宵呆在里面,最后和老板混得有多熟呢, 他后来送了我一辆山地自行车,那辆车值700块钱。同学们都打游戏的时候,有时候我玩的是系统,把windows95的控制面板里面所有的功能全部一一打开来研究都是些什么东西,因为当时我有一本很厚的书叫《windows95操作系统》,那是1996年我写信委托远方的表哥给我买的,每天我就拿这本书去电脑室里面一一对照着操作,有时候也打开系统内置的basic来玩一下,当然也有很多看不懂的东西,蓝屏更是家常便饭。 最后系统玩得有多熟呢,那时候学校里也有电脑课,年少苍狂,我号称去上课纯粹就是给电脑老师面子了。(后来才知是谁给谁留了面子,在老师讲解多个进制之间怎么转换的算法时,这是扫地僧与游坦之的差距)

2001年9月, 在南宁新华书城看到一本书,叫 《C井程序设计语言》, 这个字读井,苍井的井,好奇这是什么东西,好歹我之前也听说过c语言家族的各种变体,翻开一看,似懂非懂的东西, 说指针不安全,什么乱七八糟的, 鉴于从没听说过这东西, 敢一下时髦,咬咬牙买回去,22块钱, 食堂一碗粉8角钱,也接近28顿了。

后来大学几年,我大概了解到这个c井是运行在一种叫.net framework的插件上的, 开发工具在五张一套的光盘里,但是这几年下来我一直没法运行 hellow world.  当年的basic好歹还会原样返回"what's your name.", 好几次尝试,我一度怀疑自己是不是买的光盘有问题, 一套光盘25块钱,陆陆续续买了好几套都尝试不成功。 这什么破东西,靠插件来运行,一看就不是什么正规货,最简单的hellow world都运行不起来,你们另外那几张光盘的什么 j井、Vb井、C++井什么的也全都不是什么上得了台面的货色。 骗我起码花了200块,我一个月的伙食费就400块。 书里面还说了不装那些光盘也可以, 命令行里面敲打 csc test.cs 也可以运行, 可是为什么我的电脑总是提示说没有找到csc命令? 看来这也是个假货。这本《C井程序设计语言》就一直放在旁边,时不时不甘心了拿出来研究一下,但是没有一次是成功的。

平时我每月都会省钱少抽几支烟,买《电脑自做DIY》来看,这本书的硬件知识非常专业,看多了,也就成就了以下:

我和那个卖光盘的混得比较熟,经常带同学去照顾她生意, 那么现在我自己的事情找她,说有一套visual studio .net 光盘有问题,换了好几个光驱都读不出来,你给我换一套3d mark 02。 她肯定要给我换,我是她的财路,不敢得罪我(这种事我也就只做过这么一次)。 当时我们系有几个装机佬勾结商家,骗同学去买奔腾4 1.6 + 微星技嘉845pe主板 + ddr256 + mx440 + 优派或三星液晶显示屏, 同样的价钱我自己装的电脑是 奔腾4 1.6 + 华硕850主板+ Rambus 256 + ATI 8500 + 索尼特丽珑显示器, 我拿回这套 3d mark 02, 全流程满速运行, 完整的 directX 8.1 支持 , 12000分 , 你们 6000分脸都不知往哪放, 流程都跑不完, 我主机甩你们500条街、我显示器甩你们1000条街(那时候的液晶显示器确实是要被甩的),瞬间我在大一就成了全年级最专业的硬件专家,每天跑测试、刷显卡、做3D渲染、什么装机、买杀毒软件、系统重装、全都来找我、我不拿商家回扣,只带同学装最高性能的主机,一传十 十传百,我装的电脑跑分是最高的, photoshop是最流畅的,我放DVD的时候那个画面美啊,都有一群人来我旁边围着看,反观你们的液晶显示器那个一片惨白死黑。   帮同学装机的好处是什么呢,有人请饭吃,有饮料喝,平时同学见面各种学业问题也好说话。 两年后, 8500显卡可以刷成 ATI Fire GL,Maya 可以100万多边形实时渲染,这是又一轮高潮。  这么好的生活, 编什么程呢, 什么 hellow world 和我一点关系没有。这种体会,不知道你懂不懂。

但是不编程不行,事情是这样的:

我们是艺术院校,当时除了做设计作业、画油画、学Maya 3D渲染、吃酸菜鱼、还有另一个心中的秤砣没落地,我接任了某个动漫专业网站的站长, 我在尚未接任前两年就一直和各位前辈以及同僚吹风说,我们需要建立自主可控的自动化会员注册,虽然我们目前依托在动网论坛程序上,但那不是自己可控的技术,实际上我们自身的内容系统全是依靠html+ftp来更新,这样内容一旦增多,可能维护不过来的。  这个心病一直每隔几天就发作一次, 但是不知道怎么办, 没人会, 数据库我们买不起,而且就算是买了也不知道怎么弄, 后来我就一次次跑书店技术专栏去看, 就是瞎看, 没有头绪的瞎看, 至少要建立起一个网站程序是怎么运行的这样的概念, 皇天不负苦心人, 我看到了一本 dreamweaver 程序设计,里面有一个简单的拖来就能操作access数据库,可以保存一些东西的例子,还有一个叫数据集的东西, 能读取数据库中的表格, 而我们的网站也是动网论坛5.0+access, 空间肯定是支持的,然后我就在空间上运行起这个小例子,果然成功了,这个东西叫asp程序,好的,我们的会员注册系统可以实现了,以后我们就以asp为基础做大。

那么接下来,动网论坛的一些置顶、精品帖子、现在要怎么同步到我们网站首页,怎么打开数据库看一下里面是什么东西, 这点常识我还是有的, office 2000 就可以打开了,但是看不懂,看起来就像是表格一样的, 它和SQL又是什么关系。 光盘老板娘的生意又来了,三张一套的SQL2000,15块钱,我一周的烟钱。 SQL这个名字那么高大,还是大写的,有点腿发软, 电脑报上面报价80000块钱的东西,我这15块有没有白花。(事后结论是白花了,但这是学费)

现在的问题有三个: asp程序、动网论坛同步内容、 数据库操作, 这三个问题解决的话, 困扰我们网站的事情就能解决了, 但是目前对于三个问题的认知都是0,只会在dreamweaver里面拖一些小工具。

幸运的是,我们论坛有一位已经在外做编程工作的会员,我时不时向他请教一些关于asp的问题, 一开始,牛头不对马嘴,我连提问都不知道怎么提, 用白话来描述问题, 而他的专业术语回答我是根本就看不懂。 什么叫数据库服务器, 我们的动网论坛算不算数据库服务器, 什么叫数据集、怎么连接Access,还有一个叫OBBC的是什么东西, windows2000控制面板里面有一个叫数据源的东西,里面看起来像是各种各样的数据库,有哪些是我们的空间当前可以使用的。

(在那个年代,我们这些小网站是运行在“空间”上的,支持力度非常有限,是商家从IIS中隔离出来的一片进程和指定容量的一片磁盘空间,并且当时因为一传十十传百的说IIS某些功能不安全,于是商家们就把IIS能关的功能都关得快干净了, 那是一种连虚拟机都不如的东西,内存256M算是海量的2002年,今天的虚拟机放到当时是不可想象的高价物品,对于我们这些学生来说,可以理解为无)

当时随处可以下载到的一份SQL语言入门chm文件,看了一个星期,原来也并不是电影里面那种看不懂的符号,select * from table where id = 10  可以解决很多困扰眼前的问题了。再加上好几个月过去了,SQL入门chm配合他给我徒手写的一份OLEDB 操作Access的就200多字的简单asp程序,我也把每一行代码表示什么意思都研究透了,原来是这样,我终于可以摆脱 dreamweaver的控制了。(他是至今唯一教过我编程的人,那份200字左右的asp代码,也就是我唯一的敲门砖)

我开始了记事本写asp的时代,那时候,每天写很多遍,当时已经熟练到可以徒手写完 conn.open(......."那个什么=4.0的那一长串"......) OLEDB数据库连接字符串,网络也渐渐变得普及了,我一上网就翻看各种asp详细知识,那个叫数据集的东西,正式名称是recordset,  但是有时候仅仅通过conn本身也能实现简单的查询。

各行各业都有贼船,一旦上去,就下不来了,编程也是这样,正是因为ASP越看越深,出了一个插曲:有一个人在某个技术社区说到:asp 也是可以使用 class 的,但是这是一种“假”的class。(今天已经想不起怎么写了,有一点印象是类似 IF -- END IF 这样的包含语法)那么什么才是真的class? 以及什么是class?  贼船就是从这时候开始远航了。

这时候我才逐渐加深了认知: asp 不是语言名称,它是一个iis的功能平台名称,我们正在编写的语言, 准确名字叫 vbscript,  相应的,还可以用 jscript、perl 来编写asp。 如果使用jscript,这个语法很像我多年前仅在书上见过的高级货:C.   这种风格看起来更有前途,而且它可以前后端共用一套语言,岂不美哉,于是我尝试把编写过的程序全部用 jscript 重写,顺便能够学习到第二门语言,说干就干。(“前后端共用”是今天打这篇文章的时候才会用这个词汇,当时哪有什么前端后端的认知)

时间来到2003年,jscript重写变得更加高效,可以用更少的代码做更精简的文件模块, 我在各处都晃眼看到asp无论是vbscript还是jscript都不支持完整的面向对象, 那么,什么是面向对象? 这是一种听起来既时髦,又可以显得很有学问的感觉。有一种感觉是暂时先把事情停下来,以现在打下的基础,重新认知一下编程的世界,以及我们的程序需要怎么样的语言来做重写, 走过的vbscript 弯路不能再重蹈。 (今天我不认为那是弯路,asp-vbscript是一个很好的小型平台解决方案,至今都是)

英特尔发布了超线程cpu,一个cpu可以变成两个cpu, 电脑广场都做大型露天活动来宣传, 但我认为Athlon 64 更优秀, amd同样有超线程平台, 但更重要的是 amd有64 位cpu,64位是未来,也是时代正在变革。 于是我把更多的精力花在新同学装机要他们首选 Athlon 64 ,操作系统也换做 windows xp 64位版本, 我说话还是有用的, 3d mark 2002 的分数打下的江山, 再加上他们看到我现在天天刷显卡, 比起那些骗同学回扣的装机佬,这是膜拜级的碾压, 请不请我吃饭无所谓了, 我只要你们拿64位cpu + 64位系统让我也时不时在你们的机器体验一下各种数据的快慢。 (当时英特尔虽有超线程,但仍属32位cpu,他们的64位重心在安腾和至强, ddr平台能够发挥奔腾4全带宽的865和875芯片组尚未面世, 残废的845系列我是坚决不会推荐的, 至于我正在用的850芯片组,rambus内存虽然发挥了p4全带宽,但是32位的时代已经是落日余晖了)(那时候我装机装到可以背诵下 j2mv9-jyyq6-jm44k-qmyth-8rb2w,今天有谁能一眼看出这是什么东西的序列号吗)

体验时代变迁的同时,我暂停了jscript重写网站,先花两个月再认识一下编程语言的过去和未来,跑书店,看网站,两个月过去,虽然很多年前接触过C的概念,但是一直没接触过C++, 只知道老板娘那里有一种visual c++ 6.0 的光盘很好卖,但是窗口里拖动控件做桌面程序那是与我们的网站需求天各一方。 C井的hellow world 始终无法运行,我手头还有另一本书,叫《Java 程序设计入门》,面向对象三个语言: C++  JAVA  C#,我的面向对象,是从 JAVA 这一脉开始走开的。

不管面向谁家的对象,java有一点它能吸引我去看的,是一次编写,随时随地运行,它是真正跨平台(至少官方文字是这么宣称的),虽然我运行不起c井,但是我多多少少也从各种渠道了解到.net是假的跨平台(windows ce,windows iot, .net micro framework、电视机顶盒,人尽皆知这些都是什么货色,没有意义),但是我有一种感觉:1999年,摩托罗拉L2000www手机上市,它内置一个wap浏览器,并且内置调制解调器,拿着手机就能访问网站,当时各大杂志鼓吹:我们即将进入仅靠手机就能移动办公的时代。 如今4年过去了,移动办公的概念是一根毛都看不见。 那么这个叫java的东西今天说一次编写到处运行,是不是四年后同样也一根毛都看不见?先初步学一下再说,当初研究dreamweaver的时候,里面有一个叫jsp的东西,好像就是和这个java相关的,能不能用java这样的“正规语言”让我们的网站也运行在既正规又高级的平台上。 以及它看起来和asp的jscript,浏览器小动画里面的小脚本javascript,似乎是有关联的。 

又是几个月过去, 高级货的class写法果然和vbscript的class不一样,通过构建器可以复制很多独立的副本,通过继承可以精简很多重复的代码,这就叫面向对象?那么我用 prototype.XXX = YYY 也可以实现继承, new function 也可以实现独立副本, 这不就是苹果换个名字叫蛇果,葡萄换个名字叫提子可以多卖一些钱吗。直到有一天我在新华书店里面遇到个人,他看到我站在java相关书籍前面,就问我有没有见过BEA什么组建相关的书籍, 我说我刚入门, 还不知道这些是什么东西, 他的解释我也听不懂, 在于他很好说话, 我也就向他问起了面向对象的疑惑, 而他的耐心解答我还是听得懂的: 你还没学习多态。  而在你完成了封装、继承、多态后, 可以更上一层楼进入泛型的领域,并且他从头到尾和我流畅解释了一遍面向对象三要素, 那是个神人,有资格去寻找BEA什么我听不懂的东西, 感谢他的耐心指教,我回去恶补java知识,把那些很难看的章节硬是灌输下去,三要素学全了,目前能够直接发挥用途的就是继承,要不要先用jsp来重写一遍试试? 这时候我也不敢那么快就下结论,或者再考虑几天再说。(多态的使用需要配合接口继承,在大型项目上做功能隔离,实现某些功能的热切换,这样才能体会到意义所在,要不然只会书中例子里的 object a = 1, object b = "abc", 这是自欺欺人,当时那个小网站,不具备大型结构来使用多态,也就体会不到)

当时和我一起同租一栋房的邻居养了一个小狗,那小狗经常跑到我屋子里面来玩,于是我们人之间的话也多了起来,他也是个做编程工作的,我说我也在学习编程,他问我用什么语言,我说用asp, 他说哦,那是vb小脚本,我好奇问到,你呢?  他说我们公司最近用.Net,已经做了.Net开发一年了,平时用C#开发。我又和他求证了一遍: 你刚才说C什么? "C-Sharp"。 原来那个字不念井。

无论是念井还是念Sharp,重要的是我好几套光盘白买的事情,世面上有一套新的 visual studio 2002,  我咬牙再买一套回来,hellow world 总应该可以运行了吧。

当我把 visual studio 2002 开发环境装完,照着书里面的例子重新敲一遍 hellow world. 果然不出预料的的依旧报错没法运行, 比尔盖茨你这个骗子骗我买了第五套光盘,难怪美国国会要拆分你们公司,难怪你当ceo要下台,你这个四眼仔印堂发黑看你那张脸就不是个什么好东西,你什么新官职首席技术官, 你家的烂东西狗屎不如,难怪 sun 公司的 java 把你打得不分东南西北 ....... 省略一百骂字 (见识有限,骂人都不知道应该骂谁,如果骂得专业一点的话应该骂安德斯.海斯尔伯格)

当时已经有了QQ群,我也加入了几个群,上去照样一通骂, 有个通情达理的人让我把代码发出来看一下,一发过去,晴天霹雳: 你那是最早的2000年初测试版代码,现在你应该把Microsoft 换成 System 就可以了。 这个五雷轰顶的消息促使我不睡觉也要重试一遍 hellow world.  果然,Microsoft 换成 System 就成功运行 hellow world 了。(微软的这个把顶级空间改名的习惯在2013年k演变到vNext的过程中同样再次发生

之前骂错人了,我本来想骂的是保尔盖茨,不小心说成了比尔而已,人家比尔盖茨本来就是个有为青年,我怎么可能会骂他呢,金丝眼镜显得文质彬彬又有学问,年纪轻轻一表人才,16岁就会编程开公司,人家跻身全球几位,被国会拆分也是国会看得起它,以后一定前途无量。

这本《C井程序设计语言》,2001年初出版的,作者写书的时候是2000年。从那天开始它成了我擦桌子的原料, 吃一顿饭就撕一页下来擦,有时候小狗过来撒尿,就多撕几页下来擦。印有作者名字的那一页,我贴在门背上,用来当飞镖把子。

拿出那些 visual studio .net 、 2002、 2003,细看,发现那几套25块钱买来的光盘用料特别好,背面文字印制得相当精美,这字体一看就是出自大师手笔,拿在手上沉甸甸的肯定是正规货,光面的反光比太阳还亮,晚上可以当夜明珠。

 

待续第二篇

 

 


最后附注至博客园

  

From:https://www.cnblogs.com/kvspas/p/18334492
本文地址: http://shuzixingkong.net/article/628
0评论
提交 加载更多评论
其他文章 Jmeter二次开发函数 - 文本替换
此篇文章将在Jmeter创建一个新函数,实现替换文本中的指定内容功能。效果图如下 1、eclipse项目创建步骤此处省略,可参考上一篇Jmeter二次开发函数之入门 2、新建class命名为“TextReplaceFunction”,并继承jmeter自带的AbstractFunction 3、新生
Jmeter二次开发函数 - 文本替换 Jmeter二次开发函数 - 文本替换 Jmeter二次开发函数 - 文本替换
ambari+ bigtop 编译、打包、部署步骤总览
1 ambari + bigtop 构建大数据基础平台 1.1 参考: 1.2 参考 amabri bigtop 打包部署 2 ambari+bigtop编译、打包、部署 2.0 基础环境准备 2.1 ambari编译 2.2 ambari-metrics编译 2.3 bigtop编译 2.4 制作
Net8将Serilog日志推送ES,附视频
这是一个Serilog的实践Demo,包括了区别记录存放,AOP 日志记录,EF 执行记录,并且将日志推送到Elastic Search。 说在前面的话 自从AI出来之后,学习的曲线瞬间变缓了,学习的路径也有了很大的变化。 与本人来说以前大多数都先知晓理论再找相关的框架官网或博客,然后去实践Demo
Net8将Serilog日志推送ES,附视频 Net8将Serilog日志推送ES,附视频 Net8将Serilog日志推送ES,附视频
如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?
目录前置步骤环境搭建创建容器组在系统任意位置创建一个文件夹创建docker-compose.yaml启动 Halo 服务配置反向代理以及域名解析Halo初始化页面。更新新版本的halo 前置步骤 首先你需要一套linux服务器,这里默认你已经有了。如果没有可以在云服务器优惠合集选择,如果你是个人博客
ComfyUI插件:ComfyUI layer style 节点(一)
前言: 学习ComfyUI是一场持久战,而ComfyUI layer style 是一组专为图片设计制作且集成了Photoshop功能的强大节点。该节点几乎将PhotoShop的全部功能迁移到ComfyUI,诸如提供仿照Adobe Photoshop的图层样式、提供调整颜色功能(亮度、饱和度、对比度
ComfyUI插件:ComfyUI layer style 节点(一) ComfyUI插件:ComfyUI layer style 节点(一) ComfyUI插件:ComfyUI layer style 节点(一)
探索Amazon S3:存储解决方案的基石(Amazon S3使用记录)
探索Amazon S3:存储解决方案的基石 本文为上一篇minio使用的衍生版 相关链接:1.https://www.cnblogs.com/ComfortableM/p/18286363 ​ 2.https://blog.csdn.net/zizai_a/article/details/14079
探索Amazon S3:存储解决方案的基石(Amazon S3使用记录) 探索Amazon S3:存储解决方案的基石(Amazon S3使用记录) 探索Amazon S3:存储解决方案的基石(Amazon S3使用记录)
【杂谈】JPA乐观锁改悲观锁遇到的一些问题与思考
背景 接过一个外包的项目,该项目使用JPA作为ORM。 项目中有多个entity带有@version字段 当并发高的时候经常报乐观锁错误OptimisticLocingFailureException 原理知识 JPA的@version是通过在SQL语句上做手脚来实现乐观锁的 UPDATE tabl
nacos配置&gateway配置服务发现一直报500
项目场景: 这两天不是一直在搞简化配置、使用公共配置、我的服务可以通过网关访问这几个任务嘛,也是不断地踩坑补知识才总算把这几个任务都搞好了,下面就是记录过程中遇到的问题。 使用公共配置 因为发现项目使用的配置文件过多,有application、application-test.yml、bootstr