前言:
此时姐妹们对“c是从什么语言”大约比较重视,朋友们都想要剖析一些“c是从什么语言”的相关文章。那么小编在网上汇集了一些对于“c是从什么语言””的相关文章,希望朋友们能喜欢,你们快快来了解一下吧!机器语言、汇编语言难以满足我们的高效编程需要,于是有了高级编程语言,由其编译器和解释器实现从源代码到机器代码的转换。
很快,编程语言不能满足需求,我们需要重用一些代码、算法,我们把这些重用部分写成库(函数库、类库)。
在图形交互界面时代,学了C和C++以后再利用由操作系统支持的C的API,如windows32,以及支持C++的MFC或QT,才可以开发出真正能够实用的应用。
正如一个城市如果没有基础设施的支持、没有市政局的管理,如果某一个公司想提供“衣食住行”方面的某项服务,将会非常困难。
一个计算机系统如果没有操作系统,软件开发者想开发一个诸如office系列的软件也会非常困难。
一个计算机系统的操作系统就相当于城市的基础设施以及市政局的管理。操作系统为计算机系统提供底层服务,计算机应用在利用操作系统提供的功能函数单元或类库单元来构建应用,并运行在操作系统之上,这就是界面编程。如微软就为C语言开发了基于windows操作系统的API,Windows32 API。
相对于控制台程序开发,图形用户界面的程序主要有以下两个方面的不同:
1 输入输出多了一个中间层的图形界面,数据在输入设备、图形界面、内存、图形界面、输出设备之间的交互变得更加复杂。图形界面的数据以资源文件保存,以图形界面呈现;
2 数据结构+算法+事件触发和消息响应;
在编写图形用户界面程序时,发现同类别程序的框架大同小异,如单文档程序、多文档程序、对话框程序等,把这些通用的部分抽象出来,便形成了框架。
如微软用C++开发的MFC,用类来封装C语言的API。更进一步的,MFC提供了一个应用程序框架(Application framework),其中的Appwizard可以为程序定制各类别应用的框架代码,程序员只需在其中添砖加瓦即可以构建应用。可惜的是,MFC慢慢走向没落,此后,微软转而开发了支持C#的WPF引擎和应用框架。
Qt也是一个支持开发C++图形用户界面的应用框架,且跨平台。支持的平台有: MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、 Win7 、win8、win2008、win10。
框架这种为了解决通用问题而诞生的东西,在初期比较有用,但一复杂后,带来的问题比能解决的问题还多,如:
引入Bug,这么庞大的类库和API,有Bug很正常;复杂,无数的API交织在一起,相当复杂;版本问题,因为使用了框架,一个版本API变更,很可能就会引发连锁反应,以前基于框架的东西不能运行了;其它无数问题;
现在计算越来越复杂,每一个人,已经只能在狭小的领域内工作了。其实通用框架,用处不大,写A应用,只能用它的1/10API,写B应用,又用了另外的1/10,那干麻还要全部使用或学习呢?
于是,借互联网的东风,很多公司推出了API接口,这玩意比框架简单多了,按接口调用就能用。发短信,读博客,提交定单,分享等。
但是问题又出来了,大量的这些东西,不会比框架更简单,好处就是用什么,可以取什么,不象框架那样,不用的也得包进去。但问题就是,这些API虽然都是按标准协议提供,但直接写接口也是相当麻烦。
有没有办法更进一步?当然有,我们把它们变成“标记”,然后在后台去解析这个标记就OK了,比如转发,就@XXX,关键字,就#关键字#,把Html简化成可书写的文本,就成了Markdown。
这种巨大的进步,现在只看到一个开头,但其传播及流行速度惊人,甚至将来不久,Markdown可能会成为基础教育的标准课程。
Markdown是标记语言,如果能再进一步,调用各种WebApi,引入编程的一些基本概念,那么将成为一种更高级的页面语言比如机器人语言。
同样,我们再来看框架,如果把通用框架,打散变成专业框架,那就进化成了引擎,一种很时髦的东西。大面全的框架,可以靠边站了。
同时,引擎技术要再进一步进化,就会进化成DSL语言,比如JS引擎,Lua语言等,更复杂的应用,或会内置好几种引擎,比如浏览器,有图形,有JS,未来还有语音视频等。
而在基于浏览器的开发上,是不是也可以这么进化呢?当然可以。
如果我们把行业的应用,从库,到框架,到形成一个行业引擎,是完全可行的,这样的专用引擎,能极大的解决行业开发问题,如果在引擎之上进一步抽象,形成“行业语言”也就是DSL语言,那更是贡献,比如Sql,这种建立在数据库之上的东西,还有JSON。
通过抽象出基本的行业规则,规范,标准,形成一些通用表示法,标记,再使用一个底层引擎搞起来,通过这种模式来复用,是一个非常好的方向,是一种比Api更高层次的复用。
参考:
《从语言到库到框架,再到API,再到标记最后到DSL语言》
-End-