设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 2808|回复: 63
打印 上一主题 下一主题

[信息技术] 【跟风】我的递归程序经历

  [复制链接]
  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    跳转到指定楼层
    楼主
     楼主| 发表于 2025-1-20 00:13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 testjhy 于 2025-1-20 00:13 编辑
    $ h" ]# W$ k, p, m; k5 X# z" T1 W$ G) l  N1 u. z7 O5 `, M
    @沉宝同学[用汇编语言实现递归]可以看出他是有很好的计算机专业童子功的
    $ g) k9 _7 B5 N4 m, @6 G- v我大学专业核反应堆工程,小专业是反应堆控制,当年三里岛、切尔诺贝利核电站出事后,国内核电也被压制,我也逃到控制专业去读研究生,没考好被搞人工智能的导师拣了过去。人工智能当年的编程语言是Lisp,读研究生课程时,我大学时学了点Fortran,对Lisp这种什么Lamda表达等等这种计算机或者数理逻辑思维很难转弯,考试混过70多分及格算过关。最重要的是研究生院机房很小,几乎没有上机实习的机会。- D+ N( N# Q* n6 }2 {8 {
    : T; u) c7 F3 ?' t  U( A5 b; c
    来到导师身边,科研条件大幅改善,主要是老师从美国回国时带来了一台IBM PC,当时整个学院机房才有那么几台PC,老师们都要分配机时,学生几乎没有可能使用,所以我们组的学生特别幸福,除去做理论的几个学生,大约只有三四个学生可以轮流使用。我在核反应堆工作时经常上夜班,所以除了正常排班使用电脑,后半夜也是我的天下。
    , U( a2 I9 |  ?# S* R7 o6 K7 k5 J. v5 S$ K( R! Q
    我有一个好师兄,虽然来导师身边比我稍晚,但我读硕士他读的是博士,就象沉宝同学一样有很好的童子功,他辅导我用Lisp,他写汇编的能力很强,一是把反汇编Lisp语言,把英文版的Lisp汉化,在学术圈里推广。二是可能第一批写反病毒程序的,记得当年第一个计算机病毒是“Ping Pong”病毒,中毒后屏幕上有一个小球在弹跳。师兄把病毒反汇编后,找到消除或抑制它的方法,这个是商业行为,为他挣到第一桶金。多说几句,我以为他会往创业方向发展,结果他的个性有点游戏人生,在学术和市场之间行走,过几年研究方向转变为科技金融,这可是2000年早期,可惜英年早逝,经常令我无限追思。) n. m' _3 A$ v, u$ k4 ]
    5 V3 r6 q( T, M5 u5 T% z
    在师兄的帮助下,我的Lisp语言能力可以吹牛:突飞猛进。过一二年时间,在学院我师兄以下,我不惧其他别人。我其实最得意的,就是递归用得贼好。那时候,内存是512K,硬盘是10M,硬盘要被6-7个人占用,记得硬盘空间一紧张,大家都可以去别人目录下把OBJ,exe,还有常用程序删除了。递归用得好,程序就小,为了这十几K,100K的空间还斤斤计较。8 s. Z2 c. I- g$ i( r

    + V2 T! n) g/ L: Y2 Y% w当时我写的Lisp程序,别人看了都说妙,有些递归调用,师弟们说看得懂,要自己编起来,可能就按流程写一大堆代码。我往往是在某个关键点,设一个全局变量作为开关,直接调用自己,省略不少重复性过程,靠全局变量控制相似过程的不同部分。
    . c' a/ {. G8 E& U* G+ d! _
    4 y# z4 m3 Y0 `- {: y) C记得我研究过专家系统(后发展成知识系统)的开发工具,给师弟们甚至我的早期学生们讲课时,一讲到推理机,他们都觉得神秘而又好奇,都说师兄或老师你把你的推理机程序给我们看看吧。我给他们看后,发现所谓推理机实际上也就2-300行代码,利用递归写得很精炼。推理机实际上就是“搜索-验证-执行”的递归调用,象搜索部分、验证部分和执行部分也是总控下的递归调用。说完代码的思想,他们对推理机有个基本了解和破除了神秘感,对推理机深入研究和实现有了基础支撑。
    + F# J" G4 r# l" c  H8 N: }9 d$ C) Z* I7 e# u; i" C& d$ p" q9 ?6 ^
    Lisp是解释性语言,必须在Lisp环境下运行,这对推广应用极为不利。我又转到C,C的递归调用很方便,特别是用指针方式,可能是最接近汇编的过程,但出错要检查出来也是不容易。这个阶段是Borland公司编程工具兴旺的年代,我又试着用Turbo Pascal,Pascal程序的规范性忒好,就是不支持递归。我是码农底色的研究者,后来又转到微软的Visual Studio环境,VC,VC++,甚至VB,我都写过比较大的程序,但可能此时已经偏向神经网络了,对递归程序的印象不深。
    6 q" `+ Y6 u: E; e8 x3 [* ^
    : r7 E: Y; ~+ F; `$ P好像在IBM PC时代,递归调用也是受限的,主要是堆栈和寄存器空间有限,我因为没有汇编经历,所以没有体会,而Lisp语言是解释型的,所以,它的递归调用是在Lisp内部实现的,依稀记得师兄告诉过我,Lisp启动后,首先是把PC很大一部分内存(即“堆”)圈成自己的运行空间,在这个空间上模拟出Lisp运行堆栈等人工智能程序需要加强的资源,所以我的复杂递归程序象A*算法的实现,基本没受资源限止而卡死等现象。但解释型程序与编绎执行型程序相比,速度至少要慢3-4倍,递归执行因为压栈和弹出等附加因素,比象C语言要慢得多,我有另外一个搞计算机图形学的师兄弟,当时看他的C语言编绎的程序,输出显示一行一行极快,基本上无法看清。而我们Lisp输出,感觉就是电传打印机似的,在显示器上噼里啪啦一个字一个字蹦出来。唉,回想起来既温馨又怀念。
    ! D% R, y7 H1 i  V) T9 S  ]

    评分

    参与人数 24爱元 +233 学识 +2 收起 理由
    宝贝小猪 + 12
    老爷王 + 10
    常挨揍 + 15
    老财迷 + 8
    laser + 12

    查看全部评分

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 1926 天

    [LV.Master]无

    沙发
    发表于 2025-1-20 03:04:02 | 只看该作者
    本帖最后由 数值分析 于 2025-1-20 03:12 编辑 1 f5 P1 v. o( |/ Q% l

      k$ |8 P4 }" X( V( @看到最后一段,想起了当年和内存较劲的时候! |/ H2 |# }! ?2 V
    还记得DOS的最开始的640k内存叫基本内存,因为“640kB should be enough for anyone”。再往上384k叫扩充内存,本来是保留给系统和驱动程序用的,用户用不了。但后来基本内存不够用,可以用EMM386.EXE把内存驻留程序映射到扩充内存运行。这样基本内存就可以留下大概600k来运行程序。
    2 o( o7 w( D. B1 R- Y% ^再往上就是扩展内存,需要先加载HIMEM.SYS驱动才能使用。5 ?3 @* s+ g* Q! q# N4 i
    我没有用过LISP解释器,但猜想LISP解释器的堆栈是软件实现的,不受实模式堆栈段大小默认为1kb的限制,那自然是大多了。
    3 r% J$ a( `( x2 w5 s" t7 [真是好久之前的事儿了。。。

    评分

    参与人数 1爱元 +4 收起 理由
    唐家山 + 4

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 3500 天

    [LV.Master]无

    板凳
    发表于 2025-1-20 04:05:04 | 只看该作者
    本帖最后由 马鹿 于 2025-1-19 17:19 编辑
    % J0 n9 a- U) @5 o0 w8 W( x  G- @( d* C4 y0 z
    我读书时候编程不惧任何人,主要是我接触编程很早,上小学就用过我爹的那个能编程basic的计算器。本科毕业我的毕业论文就有根据数据拟合的曲线 , 论文也附上了我写的code, 现在简直太容易了, 但是当时还是看起来很高级的, 我还用这个给人家攒了篇在职博士论文,所以在当年本科毕业论文是优秀毕业论文, 永久保存。
    ( B- f2 a1 n3 O# c7 h! I; X/ v0 z: Q9 Y4 D

    评分

    参与人数 1爱元 +4 收起 理由
    唐家山 + 4

    查看全部评分

    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    地板
     楼主| 发表于 2025-1-20 09:46:45 | 只看该作者
    马鹿 发表于 2025-1-20 04:05* Q+ ^. B9 D  a0 r. b- T$ h
    我读书时候编程不惧任何人,主要是我接触编程很早,上小学就用过我爹的那个能编程basic的计算器。本科毕业 ...
    " o& |$ s0 a* T7 S  M' }
    我在反应堆上工作的时候,也有这么个可编程计算器,细长型,好象是casio的,要上千元。但那时也没玩编程,离开单位时上缴了。我孩子是不是跟你小时候一样,5、6年级学Basic编程,把数学应用题做了一遍,觉得太简单了,看不上这个专业,还顺带鄙视老爸老妈,

    评分

    参与人数 1爱元 +15 收起 理由
    常挨揍 + 15

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    5#
     楼主| 发表于 2025-1-20 09:52:21 | 只看该作者
    数值分析 发表于 2025-1-20 03:04
    5 C1 l4 S$ Q4 i  N看到最后一段,想起了当年和内存较劲的时候
    # v& o! S3 |. E8 S) M& c3 G. s8 M还记得DOS的最开始的640k内存叫基本内存,因为“640kB should b ...
    ' V; r9 t* ^- J* @
    我们组里最初的PC内存只有512K,后来配置的有1M内存,能用到640K,硬盘也有20M了,扩充内存还有一个重要用途,虚拟硬盘,把程序用到的硬盘文件先拷贝到虚拟硬盘,程序调虚拟硬盘的文件速度贼快,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 3500 天

    [LV.Master]无

    6#
    发表于 2025-1-20 09:59:59 | 只看该作者
    testjhy 发表于 2025-1-19 20:46
    * u; X6 V% B/ v. ~  z我在反应堆上工作的时候,也有这么个可编程计算器,细长型,好象是casio的,要上千元。但那时也没玩编程 ...
    ( J! P% N* s0 ]6 W

    $ S: R+ L! [; K+ I! L: u+ q- x4 c/ `对,是长方形的, 挺精致的。" H* k1 T2 c, f' ~2 Q* b! n

    / l7 J+ @& F! o. J3 `! Y& q/ H7 p我当年倒是想报计算机专业, 家里不同意, 父母觉得计算机这东西只能算工具, 不算技术。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1030 天

    [LV.10]大乘

    7#
    发表于 2025-1-20 10:39:31 | 只看该作者
    Pascal语言支持递归啊。我当年学Pascal的时候有一个大作业是那个河内塔问题,就是用递归解决的。上机调程序是在贵校的计算中心,当时学校里为数不多的空调机房,进去前还要换拖鞋穿白大褂。当时大多数男生白大褂下穿的是短裤,看上去有一种莫名的性感。
    2 ^4 H* ^; t- d* D- D
    8 O% H) a, X* |* `1 I- o当时计算中心里的主机有DEC的PDP-11小型机,还有一台Honeywell的忘了啥型号。也忘了我们是用哪台调的程序。8 |- U3 i. v/ S' k# i- `7 b9 H
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1030 天

    [LV.10]大乘

    8#
    发表于 2025-1-20 10:42:56 | 只看该作者
    本帖最后由 黄序 于 2025-1-19 21:03 编辑 3 T0 h/ `0 s% ~" F% o- T' s- _

    . ?2 T6 h8 X0 Y上研究生时你们隔壁的教研室里也有台IBM PC,由一个也做人工智能编程的哥们儿独享,不过他用的是Prolog语言。
    ' k1 c/ g/ P. C( f; }6 c" Y8 \4 h7 p) J
    当然编程之余也玩玩儿游戏,当时已经有DOS环境下的那个挖金子游戏。晚上教研室走廊里经常可以听到威廉退尔序曲的声音。3 @, h- Z2 l+ U  w4 a

    2 W; Z% N- V7 ?  p' x4 q  E& m& _8 s

    评分

    参与人数 1爱元 +8 收起 理由
    老票 + 8 伙呆了

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1030 天

    [LV.10]大乘

    9#
    发表于 2025-1-20 10:52:55 | 只看该作者
    高中时我第一次接触可以编程的计算机,用的是我妈为单位保管的Sharp PC-1500,本身还带一个小型打印机,被我用来打了不少函数曲线。4 e& ~7 }4 a& |9 J  F/ I6 W
    4 {+ j' y' n* U% L
    我妈算是单位里最早接触编程的技术员,开始用的是打孔卡,所以后来科室的PC-1500就由她负责保管了,我算是近水楼台。
    1 F% X+ Z( i+ F, ~8 E7 d3 \
    ) o% _. }2 {% a+ Y6 M6 O3 I% i说起来当年最早编程的人员里女同志比例挺高。我大学同学里有两位,各自的母亲分别是贵校和空工院计算机专业的主力,还分别主持编写了微机原理教材,在当时还流行颇广。$ r4 J/ [4 h# f0 K/ Q4 B* W

    ( j" O9 x. x0 B# e
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1030 天

    [LV.10]大乘

    10#
    发表于 2025-1-20 10:58:00 | 只看该作者
    $ e' L+ M' q8 K; X+ V% ?
    高中临毕业时家父结束在美国的进修回国,带回一台这个Commodore SX-64: ) G9 @9 H. L: J+ \7 h! ], I; _8 y; o
    + G" x8 U$ G0 R! a
    * w0 u7 l  s' l: L+ E+ b

    4 Y. R, z6 i7 V7 ^0 s, r内存64K,有个五吋软驱,五吋彩色显示器。可以用Basic编程,也可以接游戏杆打游戏。那个支架可以转动成为一个提手,这个型号貌似是最早的带彩显的“便携式”个人电脑。7 y3 s* }+ O' g8 H$ i. I* I( X; j
    5 J( L2 n1 m3 I0 a& p# s
    2 p, i, ]4 G3 c% G  K; j
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    11#
     楼主| 发表于 2025-1-20 12:54:29 | 只看该作者
    黄序 发表于 2025-1-20 10:52
    : X4 h9 @: f5 {1 r高中时我第一次接触可以编程的计算机,用的是我妈为单位保管的Sharp PC-1500,本身还带一个小型打印机,被 ...

    # r5 L8 x# j; x/ L( RSharp PC-1500,yes!,我就是这个,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    12#
     楼主| 发表于 2025-1-20 12:56:51 | 只看该作者
    黄序 发表于 2025-1-20 10:42( n" D* }+ F( }  ^% q1 p& j' q& ]
    上研究生时你们隔壁的教研室里也有台IBM PC,由一个也做人工智能编程的哥们儿独享,不过他用的是Prolog语言 ...
    0 Y& \7 n! q9 B6 R! Y+ C
    你再把警察抓小偷给找回来,,记得还有一个十项全能。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    13#
     楼主| 发表于 2025-1-20 12:58:12 | 只看该作者
    黄序 发表于 2025-1-20 10:39
    1 J+ _7 s/ `: V8 ~# H6 A8 X, SPascal语言支持递归啊。我当年学Pascal的时候有一个大作业是那个河内塔问题,就是用递归解决的。上机调程序 ...

    # r" z; G/ [+ c7 [  }# T是turbo pascal吗?我怎么印象中不支持自我调用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1030 天

    [LV.10]大乘

    14#
    发表于 2025-1-20 13:38:32 | 只看该作者
    testjhy 发表于 2025-1-19 22:58
    + {8 ?! f8 S: G$ ?) ?$ @是turbo pascal吗?我怎么印象中不支持自我调用。

    * }+ f2 B3 ]! C! e4 `不是turbo pascal
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 3505 天

    [LV.Master]无

    15#
    发表于 2025-1-29 00:22:54 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 2969 天

    [LV.Master]无

    16#
    发表于 2025-1-29 00:23:57 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情

    7 小时前
  • 签到天数: 3466 天

    [LV.Master]无

    17#
    发表于 2025-1-29 00:23:58 | 只看该作者
    新年快乐
    回复

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 3259 天

    [LV.Master]无

    18#
    发表于 2025-1-29 00:24:02 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 3468 天

    [LV.Master]无

    19#
    发表于 2025-1-29 00:25:19 | 只看该作者
    6666666666666666666666666
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 3502 天

    [LV.Master]无

    20#
    发表于 2025-1-29 00:28:00 | 只看该作者
    回复

    使用道具 举报

    手机版|小黑屋|Archiver|网站错误报告|爱吱声   

    GMT+8, 2025-7-4 14:16 , Processed in 0.041913 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表