跑起来了1987年的原生态C++编译器

版主: hci

回复
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#1 跑起来了1987年的原生态C++编译器

帖子 wdong(万事休)楼主 »

最原始的C++编译器其实是C的frontend,产生的是C代码。所以Bjarne Stroustrup的原始C++编译器叫cfront。第一版的cfront在1985年发布。我搞了个BSD 4.3玩。因为这个版本的BSD是1986年发布的,所以我弄了个1987年发布的cfront 1.2玩。废了点周折,但是跑起来了。下面给你们看一个编译出来的东西。

这个东西的好处是,非常直接地展示出来了C++的设计思路。

输入程序
图片

编译输出
图片

+2.00 积分 [版主 hci 发放的奖励]
x1 图片

标签/Tags:
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#2 Re: 跑起来了1987年的原生态C++编译器

帖子 wdong(万事休)楼主 »

应证了一句话:曲高和寡
头像
hci(海螺子)
论坛支柱
论坛支柱
帖子互动: 469
帖子: 9931
注册时间: 2022年 7月 22日 15:29

#3 Re: 跑起来了1987年的原生态C++编译器

帖子 hci(海螺子) »

这个代码很简单。说明C++流行纯粹就是因为名字取得好。叫cfront就没有人鸟,叫C++人们就觉得很牛。哈哈。

对了,你折腾这个干嘛呀?要自己搞个语言?
kde23
正式会员
正式会员
帖子互动: 5
帖子: 10
注册时间: 2022年 10月 18日 23:54

#4 Re: 跑起来了1987年的原生态C++编译器

帖子 kde23 »

有意思, _Test__ctor() 感觉是要把申请内存和执行构造函数的两件事一块干了。 不过你的例子有两点让人难以了解cfront的思路:

1. main()函数中传进 _Test__ctor()的参数是栈上的内存值,已不是null, 因此_Test__ctor()内不会再调用_new()。 不知什么情况下会传入null值
2. Test()的函数体是空的,很好奇如果其中有代码cfront是不是把它照搬到_Test__ctor()中
xexz
论坛精英
论坛精英
帖子互动: 288
帖子: 5608
注册时间: 2022年 7月 30日 11:48
联系:

#5 Re: 跑起来了1987年的原生态C++编译器

帖子 xexz »

这么蛋疼,就为图形用户界面方便,gtk/qt,gnome/kde的开发效率没有显著差异。
wdong(万事休)楼主
见习作家
见习作家
帖子互动: 92
帖子: 410
注册时间: 2023年 11月 13日 15:13

#6 Re: 跑起来了1987年的原生态C++编译器

帖子 wdong(万事休)楼主 »

hci 写了: 2025年 3月 13日 17:57 这个代码很简单。说明C++流行纯粹就是因为名字取得好。叫cfront就没有人鸟,叫C++人们就觉得很牛。哈哈。

对了,你折腾这个干嘛呀?要自己搞个语言?
看看伟大的东西刚开始时是怎么样的。后来搞得太复杂,看不清真面目了。
bihai
见习点评
见习点评
帖子互动: 60
帖子: 1527
注册时间: 2022年 7月 24日 20:58

#7 Re: 跑起来了1987年的原生态C++编译器

帖子 bihai »

wdong 写了: 2025年 3月 14日 05:44 看看伟大的东西刚开始时是怎么样的。后来搞得太复杂,看不清真面目了。
这个方案我在94年就知道,就是要发明一个新的语言,可以翻译成C,然后编译。
回复

回到 “葵花宝典(Programming)”