» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[电脑] 外行问一个各种编程软件的问题

1,不同编程软件理论上是不是可以编出同一种功能的软件?比如basic,c++都能写出office??谢谢。
是的,用Basic也可以写出和C++一样的office来,LS几位说得不透彻,因为Basic里面也可以嵌入汇编代码,或者执行汇编级别的操作,只要是能够编译成硬件可直接执行的二进制文件的,几乎都可以实现一样的功能。
除非是在虚拟机上运行的,例如java、php、python之类的,在某些地方因为虚拟机的关系(因为人家最大也只能控制虚拟机,虚拟机的功能比实际上运行的电脑还是有些地方缺乏的,要获得全部的功能不太可能。)而且也不具备太底层的操作方法,所以会比编译类的语言功能少一些。
但是也可以做出Office类的软件。

不同之处在于,编程语言的级别,越高级的语言,写起来越简单,高级语言相当于吧显卡、声卡、主版、CPU都做好了,你只要拼接在一起就能实现一台电脑的功能了,开发起来非常快捷简单,缺点是对于标准模块以外的东西(例如你要开发个以前没有过的能实现实时光线跟踪的硬件加速模块)就很费力(因为压根没有这种模块),而且实现起来麻烦(因为这种语言本身就是为快速开发设计的,底层操控的方式要么就是没有,要么就是很简陋或者很麻烦,就像basic实现汇编比较麻烦),甚至不能实现(压根就不让你进行底层操控的语言不是没有,javascript就是,虽然人家依然用这个东东做出了所见即所得的编辑器,例如我现在正在回帖的输入框)。

回过头来,编译型的语言虽然也有一些模块,但是基本还是要你用更底层的东西做,回到电脑的例子,你就要从电容、电路板之类的小零件开始搭建整台电脑了。而像汇编语言,你基本是要从原材料级别来制作电脑啦!优点是你可以做出各种各样的东西,这些只受限制于你的想象力和目前PC的处理能力。

不过其实像C语言这种发展了很久,玩家众多的语言,有很多函数库,相当于已经做好的显卡、声卡之类的,你也可以快速搭建一台可以用的电脑来,但是缺点在于,这种东西并不是官方设定的标准(当然官方也设定过一些,但是这些模块数量不太多),相当于这家公司出的显卡有72个引脚,另一家的有172个引脚…………,发展太久,规范太多,而且针对不同的平台,甚至导致这些语言在不同平台有不同的特性,例如插在支持SLI主板上才能支持SLI,支持双通道主板才支持双通道。虚拟机型的语言由于是存在一个虚拟的电脑上的,所以特性基本是一样的。

2,编写mac系统的软件可以在windows环境下用微软出编程软件编出来么??还是必须是mac系统自己的编程软件?
这个就涉及到跨平台的问题了,像前面说过的,不同平台的特性不一样,所以,专用的编程语言是不同的,你不能换到其他平台还能用,就算mac的objective-c和win的VC都是C语言,但是他们是发展不同的变种,很多特性不同,甚至有些函数不同,你需要做很多修改也许才能用。但是跨平台的语言就能通用了,采用虚拟机运行的语言就是这样一种,因为前面说过了嘛,虚拟机的规格都是一样的,java语言编写的程序在mac平台和win平台基本都能通用,因为sun公司发布了mac和win平台的虚拟机,虚拟机把jaca语言编写的程序都翻译成统一的东西。

还有一种东西,例如著名的gun编译器,它可以在mac平台上编写win平台的软件,反之也行,甚至还可以编写gba、psp之类游戏机程序,只要你编写程序没有用到某平台的独有特性,例如你写个gba游戏,不会去调用DX 11就行,只要针对不同的平台编译一份软件就行了(当然,还要做一点点小小的处理)。

简单点就是说,你要是编写一些各种设备都支持的程序(例如计算:1+1=2并显示在屏幕上),用支持交叉编译的编译器,你就可以再一个系统下编写出其它系统可以用的程序啦。或者是用跨平台的解释性、虚拟机类语言编写。


本帖最近评分记录
  • alucardx2004 激骚 +7 这么厚道居然没人加JS 2010-1-10 22:24

TOP

好吧我写错了是gnu不是gun……



TOP

引用:
原帖由 henvelleng 于 2010-1-10 14:49 发表
有一种程序是完全不依赖OS而是直接依赖硬件平台的,比如说bootloader,比如说grub4dos,比如说windows软激活程序,它并不是在OS下运行的,而是直接操作硬件,以及使用bios提供的软中断资源。
这句话其实狭义在X86体系是可以成立的,因为X86体系的引导方式都是一样的。

但是涉及更多的硬件就不行了,其他硬件上,引到方式和X86完全不同,这也是gurb根本一直不到其他硬件上的缘故。


TOP

引用:
原帖由 henvelleng 于 2010-1-10 15:53 发表
其实其他平台的引导也是很容易的,只是x86有bios存在变得异常统一

就我自己来说,在手册相关硬件的章节看明白后写一个能引导kernel的bootloader大致在几百行代码左右(99%以上代码是C),真正需要初始化的硬件并不 ...
嗯嗯,引到的部分其实都是蛮简单的,代码量不大,了解硬件特性和引导步骤后都能编写出来

TOP

[posted by wap, platform: GoogleChrome]
引用:
henvelleng 发表于 2010-1-10 16:00
我发觉我说话越来越没重点了 我来总结下上面说的:启动kernel的过程很容易,工作量的大头是kernel的移植,在熟练kernel的移植后,android的移植也就不难了

还有一些像数码相框之类的项目,则根本不用跑kern ...
就是单片机开发,直接用汇编写程序,好像进好几年来也有用C之类开发的了

TOP

引用:
原帖由 pangeng 于 2010-1-10 21:15 发表
apple script算什么级别的编程软件?
这个,和Windows下的VBScript差不多级别,算脚本,级别几乎是最高的……

TOP

[posted by wap, platform: Nokia (E71)]

记得当年比尔盖茨有个著名的挑战说别人用c能写出的东西他用basic也可以写出来


所谓最高级,就是学起来最简单,但是能干的事情最少

[ 本帖最后由 jun4rui 于 2010-1-11 08:59 编辑 ]

TOP

[posted by wap, platform: Nokia (E71)]
引用:
hourousha 发表于 2010-1-11 09:43
原帖由 jun4rui 于 2010110 10:59 发表
1,不同编程软件理论上是不是可以编出同一种功能的软件?比如basic,c++都能写出office??谢谢。
是的,用Basic也可以写出和C++一样的office来,LS几位说得不透彻,因为Basic ...
可以的,18年前我在dos就干过了。

不是内联汇编,而是用basic吧汇编代码弄成操作码和数直接丢到内存然后调用。

记得当年90年代初期家用电器推国产fc学习机就有篇例子用学习机自带的basic全程这样做然后调用做了个贪吃蛇。

TOP

引用:
原帖由 hourousha 于 2010-1-11 10:28 发表

你指的是CALL Absolute这种东西?这倒是确实可以执行二进制代码。不过以我的看法,这种已经不属于嵌入‘汇编’了,就好象VC的内联汇编,如果里面全都是_emit...这种,那与其说是内联汇编,倒不如说是内联机器码,呵 ...
80~90年代那时候没有强有力的统一编程工具,顶天了算得上Turbo C?各种basic、c之类太多了,多少有点有特色的东西,那时候控制硬件,调用中断之类几乎人人可为。6502其实是很强力的CPU了,APPLE II也是用这个,当年的主流标准个人电脑

TOP

引用:
原帖由 pangeng 于 2010-1-11 18:39 发表
谢谢各位,了解不少。
java语言可以跨平台,对我很有用,准备学。但我还有个问题,我需要编的软件需要接收电脑serial port和usb接口的信号,java能否编出读取电脑周遍硬件数据的软件?
java有相应的包,可以读写。不过虚拟机语言不是很好做这种东东,而且对于初学者来说java真的不太友好。试试用python吧,简单,高效,适用范围也很广,可能比java更广泛

TOP

[posted by wap, platform: Nokia (E71)]

python有mac版的,很多平台都有python甚至s60手机系统

TOP

[posted by wap, platform: Nokia (E71)]

是的,需要厂家资料

TOP

发新话题
     
官方公众号及微博