惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
博客园 - Franky
V
V2EX
爱范儿
爱范儿
J
Java Code Geeks
小众软件
小众软件
Last Week in AI
Last Week in AI
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
酷 壳 – CoolShell
酷 壳 – CoolShell
The Register - Security
The Register - Security
GbyAI
GbyAI
Vercel News
Vercel News
Y
Y Combinator Blog
腾讯CDC
F
Fortinet All Blogs
I
InfoQ
N
Netflix TechBlog - Medium
B
Blog RSS Feed
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
Scott Helme
Scott Helme
T
Tor Project blog
U
Unit 42
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
aimingoo的专栏
aimingoo的专栏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
Security Archives - TechRepublic
Security Archives - TechRepublic

博客园 - HenryRead

OpenGL 像素在内存中的排列方式 Unreal Engine 4 一些小技巧或提示 介绍Unreal Engine 4中的接口(Interface)使用C++和蓝图 Project Euler Problem 17 一种简单定义FourCC常量的方法 (C/C++) [翻译]进化游戏的层次结构 - 用组件来重构你的游戏实体 [转载]Netmsg 局域网聊天程序 [转载]使用 WSAAsyncSelect 的 Winsock 编程模型 [转载]Singleton的一个基类实现 [转载] VC6 STLport-5.1.4 /STLport-4.6.2 编译,安装 [转载] 跨平台C++程序开发系列文章 计算机科学数学理论浅谈 (转载) 致初学作曲的业余音乐爱好者 (转载) 搜集的优良OpenGL教程 (转载) OpenGL教程 "Top Ten" (转载) fltk2更新简介 FLTK简介 [Linux 书籍合集] Linux eBooks collection CodeLite可以媲美Code::Blocks 不指定
开发者:我们应该在哪个层次编写代码?
HenryRead · 2009-11-17 · via 博客园 - HenryRead

    这个周末闲来无事, 于是在VMware Workstation 5。5。1 Linux版本上安装了一个Mac OS X 10。4。3, 也就是Drawin 8。3。1。 整个安装过程的确碰到些小的问题, 主要的两个”不可能”的问题是:

    1. 必须要将ISO刻录成DVD来安装, VMware 5。5的虚拟光驱不兼容Mac OS X的安装。

    2. VMware的光驱需要安装在IDE 0:1的位置上, 和硬盘同一个IDE口。

    其他需要注意的是Guest OS需要选择FreeBSD, 在安装过程中先删除网卡, 声卡, USB这些模块, 等系统安装完成后再加载。 这样可以让整个安装过程非常顺利。

    不过我在这里要谈的一个重点是我之后安装了DVD盘自带的X11, 以及XCode中的GCC和DevSDK。 非常有趣的是我将一个在Linux上基于XLIB开发的程序在Drawin上重新编译, 一切出奇地顺利, 然后就能运行了。

    我从来不知道C和XLIB写出来的程序具有如此高的可移植性。 这让我回想到前几周我运行一个JAVA程序所碰到经历, 这个JAVA程序对运行环境的版本出奇地敏感, 这导致了超过半数的机器无法运行。 这不得不让我重新思考一下中低级语言和高级语言之间在可移植性上的问题。

    高级语言因为面临其功能的扩充与频繁的升级, 反而导致了开发上的复杂度(最极端的或许就是HTML, JS这样的表层语言)。 那些所谓的低成本维护和高移植性的神话正在被其自身的剧烈变化所击破。 而相比较人们不再去触碰像C这样构筑的中低层结构, 这让程序开发环境变得非常稳定, 而这种稳定也带来了出乎意料的高可移植性与性能。

    下图就是我测试的 一个程序, 我拿我所有在Linux用C开发的程序在 FreeBSD, NetBSD, Cygwin 以及 Drawin 上均编译运行通过, 并且性能良好。 这或许应该让我们重新思考一下, 我们应该在哪个层次编写代码? 我的观点是: “一个稳定的层次“, 而从物理角度来看待这个问题同样显而易见: 这个最甜的层次通常就是结构的中下层。

那个写这篇博客的人,所写的C程序能有良好的移植性,是因为Unix类的系统都是遵循一个统一的标准,POSIX。说白了,就是C语言和系统POSIX系统调用的行为应该一致的。C语言较为简单,有良好的移植性,标准化时间长,实现之间的不兼容性问题较少。而POSIX标准,是根据现行的类Unix系统共同制定。这些层次,属于中低层,变化较小,但不兼容性问题依然存在。因为,中低层以上有大量的上层应用,如果一点轻微的改变都会使上层的应用软件无法运行或者是运行不正常。Vista不兼容,以前的很多软件就是典型的例子。

中低层不是绝对的稳定层,应该是在软件开发中尽量保持稳定的层次。