免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8697 | 回复: 17
打印 上一主题 下一主题

[技术动态] [转] 黑死 java 不商量 [复制链接]

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-30 19:47 |只看该作者 |正序浏览

http://avboost.com/t/ksbs/339

很久很久以前, 我学习了一门叫 C++ 的语言。那个时候我在写一个叫 Emacs 的软件的变种。源于对 C 和 C++ 的厌恶, 我把我的厌恶都发泄到了用户身上。 如果用户做错了什么,程序会侮辱他,把他叫做火鸡,并把屏幕填满垃圾。

后来 这个 Emacs 版本没人用了,我于是去了 DIM 公司混饭吃。 在那里, 我遇到了同样一群讨厌 C++ 的人 。C++是如此的难用,我们决定设计一个更简单的 C++。

我对 C++ 的第一个讨厌的地方就是 他的内存管理。 太讨厌了! 我得不停的写 new delete, 还得操心 new [] 和 delete [] 的区别。 还得时刻关注一个对象的生命周期,一不小心忘记了就要内存泄漏了。

编写 Emacs 的经历让我很快的想到了 lisp 语言, lisp 语言里带有一个垃圾收集器, 于是,我就把垃圾收集器带到了我的语言里。

因为有了垃圾收集,程序就非常简单咯~ 在也不用操心内存管理了。

等等, 用户要是把指针存到 int 里, 然后再 cast 出来咋办? 垃圾收集没办法对付这种情况啊! 简单! 废了指针不就好了啊~ 。

好的, 我有了一个初步设想了,这个语言应该是

    自动的内存管理 (GC)
    不需要指针

等等, 对象要是分配到栈上和堆上, 又要不同对待了~ 栈对象肯定和堆对象不一样啊! 如何引用对象成员呢? GC如何区分他们? 哎呀, 好麻烦, 没指针好像就没法区别对待 栈对象肯定和堆对象了! 咋办? 好吧,不允许栈对象就是了嘛! 所有的对象都从堆里分配就好了嘛!真好啊,既然所有对象都是在heap上分配的,区分stack和heap的分配就没有必要了。我可以轻易说 Cat x = Cat() 或者 Cat x = Cat("mittens")。

好的, 我有了一个初步设想了,这个语言应该是 - 自动的内存管理 (GC) - 不需要指针 - 所有的对象都从堆分配,变量只是一个引用

那么接下来是 对象的设计了。面向对象的语言是潮流!

C++ 居然支持 C , 所有的东西不都是对象, 这太恐怖了! 面向对象的语言是潮流!怎么能不面向对象呢? 没对象怎么行! 所以 我的语言必须得是 面向对象的语言! 这个是潮流! 既然面向对象, 就要真正的面向对象 所有的东西都是对象 , 哈哈,这是我从 UNIX 那里学来的,我厉害吧!

啥? main() 函数咋办? 切, 放到一个对象里, 做成 static 成员函数就好了 。。。。。。

为了面向对象的时候, 用起来方便, 我决定,所有的对象都继承字一个叫 Object 的对象! 这样才好! 这才漂亮! 这样不用那难学的模板了, 诶, C++ 的模板太难学了, 肯定大家都和我一样学不会的! 我都学不会,别说一般的程序员了!是吧。 只要大家都是一个根出来的, 用不着写模板, 你的算法就是通用的啦~

而且单个根继承下来, 对 GC 来说也变得容易实现了嘛!

好的, 我有了一个初步设想了,这个语言应该是

    自动的内存管理 (GC)
    不需要指针
    所有的对象都从堆分配,变量只是一个引用
    所有的东西都是对象
    所有的对象都直接或者间接继承自 Object
    所有的方法都是虚的

恩,看起来这样的特性不错, 肯定比 C++ 简单啊~ 大家肯定用的比较 happy 的~ 性能这种东西嘛,丢了丢了, 只要写程序快多好,足矣弥补运行效率的损失了, 再说, 就一个默认虚函数而已, 有啥效率损失。 GC 又不是时刻跑,偶尔出来跑一下啦! 这点效率损失是可以接受的! 带来的好处不用多说, Better C++ 啊!

等等, 异常忘记加了, C++ 都有异常, 咱家咋能没有! 靠!加了加了 !

好的, 我有了一个大概设想了,这个语言应该是

    自动的内存管理 (GC)
    不需要指针
    所有的对象都从堆分配,变量只是一个引用
    所有的东西都是对象
    所有的对象都直接或者间接继承自 Object
    所有的方法都是虚的
    支持异常处理

不错, C++ 还有 RTTI , 我的语言怎么能没有? 加了! 还得加的更厚道!

好的, 我有了一个大概设想了,这个语言应该是

    自动的内存管理 (GC)
    不需要指针
    所有的对象都从堆分配,变量只是一个引用
    所有的东西都是对象
    所有的对象都直接或者间接继承自 Object
    所有的方法都是虚的
    支持异常处理
    支持运行时类信息

哈哈! 这语言已经和 C++ 在特性生很接近了, 差不多了, 但是我需要推出一个 杀手级 的特性! 保证把 C++ 秒到棺材里。

他 C++ 不是号称 “跨平台” 么? 我去! 要到处编译的, 每个平台的编译器还都不一样! 算你妹的跨平台! 咱这语言, 必须真正的跨平台!一次编写, 处处运行!

这TMD的有点意思哈!恩,简单, 咱设计个虚拟机不就完了么! 把咱这个语言的程序用虚拟机跑起来, 只要移植虚拟机就可以了。

恩,最终的语言应该这样的

    自动的内存管理 (GC)
    不需要指针
    所有的对象都从堆分配,变量只是一个引用
    所有的东西都是对象
    所有的对象都直接或者间接继承自 Object
    所有的方法都是虚的
    支持异常处理
    支持运行时类信息
    程序运行在虚拟机上,一次编写处处运行,真正的跨平台

拍屁股决定了语言特性后, 咱就马上开始实现这个语言了! 当然, 实现这个语言还得靠 c++. 否则咱拿什么编译这个语言啊!

这语言写着写着, 咱又发现了几个问题, 首先 int char 这类的类型, 他放到堆上不太好啊!

好吧,打个补丁, 把这几个类型叫做 primitive 类型, 和 C 一样, 分配在栈上好了。

过了一段时间后, 我的主管大力的称赞了我的新语言,然后它被推向了市场, 冠名为 Ksbs 语言。

这个语言引起了很大的轰动, 我很自豪, 因为我把 C++ 所有不好的地方都消灭了, 哈哈哈! 我伟大~

至于 GC 和解释执行导致的效率问题, 我也开始通过更厉害的 GC 算法和 JIT 编译器来弥补了。 我找了几个 benchmark , 证明 GC 比 手工管理内存还快, 另外找了写枪手来批评一下 C++, 整个市场接受度良好! 哼~

在多年的实践里, 我发现了这么一个事实, GC 虽然能管理内存, 但是管理不了其他资源, 比如文件描述符。这些资源程序员必须小心管理, 否则容易发生资源泄漏问题。

我了个去!! 这是很严重的问题! 靠! 怎么没有人告诉我 !! 我听说 C++ 发明了 RAII 机制, 可以自动的管理包括内存在内的一切资源。 这不科学! C++ 一定是垃圾的语言! 我的语言才是最优秀的!

好吧, 加入 finalize 机制好了! 恩恩, 对, 用 finalize 释放其他资源。 哈哈, 我真聪明! 有了 finalize 机制就可以释放其他资源了嘛! 一般的对象都只有内存的啦,所以多一个机制并没有引入太大的复杂度, 对吧?

我很不安, C++ 发明了 sharedptr , 这玩意, 一下子让我的 GC 黯然失色! 靠, 得想个办法诋毁! 动员公司的力量, 创造舆论! sharedptr 有原子操作, 多核情况下性能不行!!shared_ptr 无法处理循环引用!

恩恩, 就这样攻击一下, 另外再找几个例子, GC 的性能比 shared_ptr 高的。

果然, 大家都开始唾弃 shared_ptr 了, 说 GC性能更好 ! 恩恩, 我安心了。

但是, 我对摩尔过于乐观了, 我的语言时不时的遭到 “被彻底抛弃,使用 C++ 重写” 的威胁, 我得想个办法!

对! 支持调用 C++ 的程序不就好了! 让他们把比较性能敏感的部分用 C++ 给重写就好了, 别整个重写啊!

对啊, 我还得教育大家, “把性能关键的部分用 C++编写, 其他部分用 ksbs 写” 这样的观念给植入大众的脑袋!总之不能让大家觉得全部用 C++ 写是个更好的选择!

以上就是我设计 Ksbs 语言的历史, 哈哈, 我是 Ksbs 之父!膜拜我吧!

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
18 [报告]
发表于 2013-09-03 02:49 |只看该作者
回复 14# siseniao


    显然 google 认为只有傻逼才会给 手机开发 app , 因此必须得用 傻逼喜欢用的 java 语言。否则聪明人是不会给手机写 app 的。

论坛徽章:
220
未羊
日期:2015-01-30 17:38:21未羊
日期:2015-01-30 17:38:26未羊
日期:2015-01-30 17:38:32未羊
日期:2015-01-30 17:38:38未羊
日期:2015-01-30 17:43:55白羊座
日期:2015-02-10 09:25:23白羊座
日期:2015-02-10 09:25:23白羊座
日期:2015-02-10 09:25:23白羊座
日期:2015-02-10 09:25:23白羊座
日期:2015-02-10 09:25:23羊年新春福章
日期:2015-03-04 15:12:552015年迎新春徽章
日期:2015-03-04 15:13:09
17 [报告]
发表于 2013-09-02 14:35 |只看该作者
写的有点意思

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2014-02-10 17:22:57技术图书徽章
日期:2014-02-18 08:44:12技术图书徽章
日期:2014-04-29 14:15:42
16 [报告]
发表于 2013-09-02 14:27 |只看该作者
java黑无处不在啊

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
15 [报告]
发表于 2013-09-02 13:55 |只看该作者
本帖最后由 pitonas 于 2013-09-02 06:57 编辑

Ksbs 这种东西嘛,
恩,看起来这样的不错,蛮有意思的

论坛徽章:
30
摩羯座
日期:2013-12-23 17:28:38牛市纪念徽章
日期:2015-07-13 11:35:582022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:57青铜圣斗士
日期:2015-11-27 17:45:3815-16赛季CBA联赛之天津
日期:2016-02-15 13:44:3615-16赛季CBA联赛之江苏
日期:2018-05-02 16:56:2715-16赛季CBA联赛之辽宁
日期:2018-08-08 13:41:1015-16赛季CBA联赛之深圳
日期:2018-10-02 18:05:0315-16赛季CBA联赛之天津
日期:2019-05-31 15:05:0615-16赛季CBA联赛之北京
日期:2022-06-30 13:34:1115-16赛季CBA联赛之同曦
日期:2022-07-06 19:33:5415-16赛季CBA联赛之吉林
日期:2022-12-28 14:16:22
14 [报告]
发表于 2013-09-02 13:46 |只看该作者
用java做嵌入式软件是瞎JB乱用,例如烂ANDROID,典型弱智图简单的破系统

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
13 [报告]
发表于 2013-09-02 04:07 |只看该作者
虽然 “合适的就是最好”。 显然 java 没有一个合适他的地方。

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
12 [报告]
发表于 2013-08-31 15:53 |只看该作者
linux_c_py_php 发表于 2013-08-31 15:45
狗日的淘宝, 狗日的阿里, 狗日的JAVA


淘宝服务器做的牛b,

论坛徽章:
17
处女座
日期:2013-08-27 09:59:352015亚冠之柏太阳神
日期:2015-07-30 10:16:402015亚冠之萨济拖拉机
日期:2015-07-29 18:58:182015年亚洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥猪
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56双子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
11 [报告]
发表于 2013-08-31 15:50 |只看该作者
争议语言优劣的结果基本上都是“一地鸡毛”,没有赢家。总之本着一个原则就没错,“合适就是最好的”

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
10 [报告]
发表于 2013-08-31 15:45 |只看该作者
狗日的淘宝, 狗日的阿里, 狗日的JAVA
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP