代码可以理解成是一种高端语言理解么?

“高端”的编程语言是否真的高端?
招聘信息:
我看到了许多刚接触Ruby、Python和Javascript的新手程序员抱怨这些语言太低端,就好像是在以某种方式欺骗系统一样。他们认为他们没有学习到那些真正“高端”的编程语言。某些语言是否真比另外一些语言更高端?我们一起来研究一下。从电频层面上看众多的编程语言在方方面面都有所不同。但从低级的机器语言到我们大多数人使用的高级语言,都离不开电频这项技术。低使用性的机器语言并没有表现得比那些高级代码更高端或者先进。低使用性是众多语言设计者在完成特定设计目标的长期选择结果。让我们继续深入,这里有一个用机器语言编程的例子:这段代码一旦被数字处理器解析为电子信号后就能直接操作数字传感器和电动机了。在#之后的那些人可读懂的东西会被电脑忽略——它们之所以被程序员放在这里是为了让其他人读到这段代码后能知道其究竟在干什么。感谢上帝,我们不用必须像这样来编写代码。程序要控制电脑的话最后都会转变成机器语言的。但是我们创造了编程语言用来取代那些直接用二进制、十六进制或者十进制代码来编写的机器语言(如早期的计算机科学家像阿兰·图灵和他朋友所做的那样),它帮助我们以更快更容易的方式将自己的想法转化成机器指令。有许许多多种方式都可以生成你在上面所看到的那段机器语言,因此就会有许许多多种编程语言,但是它们全部都会在某处转化为电频频谱。从这个角度来看,语言的选择其实就是对让电脑帮助你生成机器语言的方式的选择。那么,高端和不高端,区分的依据何在?从设计角度上看今天所有的程序语言都是人们为了完成某种用途而设计出来的。这种理解是至关重要的,因为它们的设计目标决定了当程序通过它们运行时用户将得到的体验。让我们通过设计目标来对比两种编程语言C和Ruby。C的目标:接近于机器语言,但能够移植在许多机器架构上。Ruby的目标:美丽、简单以及令开发充满快乐。虽然最终都会生成机器语言,但不同的设计目标使这些语言的使用体验彻底不同。由于C语言结构更接近于机器的实际工作,因此它的机器代码在计算机执行时会更加高效、快速。这里有一个记录了各种可视化程序语言在处理某个简单文本的速度的图表,随着文本尺寸大小的变化,程序语言在处理速度上发生了变化:(纵轴为处理花费的时间,横轴为文本的大小)由于执行时间很容易衡量(人们喜欢优化他们能够衡量的东西),象C一样“快速”的语言在人们精神层面上就会认为是高端的编程语言。这其实是虚假的,这与不精确的速度测量密切相关。速度的测量C和那些底层语言在计算机硬件迟缓以及系统资源受限的时代是不可或缺的。毁灭战士、雷神之锤以及其它的第一代3D游戏的出现才突破了只能使用注重机器运行速度的语言的限制。然而在今天,相对于我们在计算机上需要的大部分东西,计算能力是廉价和充足的。在软件开发中真正受限的是开发人员的时间和精力。象Ruby那样的语言可以让程序员用更少的代码做更多的事情,使开发更加快速。增加开发速度意味着可以更快的找出你所做的是否是真正的需求,可以更加简单的添加用户要求的功能以及可以使用更少的开发人员更轻松的完成项目。下图是多种常见语言的代码复杂度排列:(黑色短横线为平均复杂度,红色字为最热门的一些语言,黑色字为较冷门的一些语言)这张图可以让我们清楚知道哪些语言学起来更简单,帮助初学者找到易于开始的位置,另外这也可以解释为什么有些人认为某些语言很低端。到这里,你认为哪种方法更“高端”呢?多元化这是一个错误的命题,因为问题的答案取决于你的需要。科学家、统计学家和数据分析师仍然需要一门象C语言那样注重机器运行速度的语言来帮助处理他们的工作。大多数网络开发者需要象Ruby或者Python那样注重开发速度的语言来快速满足他们的业务和客户目标。在每个情景中,“最好”的语言都是不同的。需求的多样性支撑了一个在不同设计目标下,程序语言多元化的重要性的强力论证。程序设计中永远不会有一门人人都采用的世界语,甚至是机器语言也非潜在的通用语言,因为每台电脑的架构都采用了略有不同的机器语言。对于对软件有不同需求的我们来说,这是一件好事。独立的认识在新手程序员阅读到这篇文章的时候:我希望它可以帮助你对所学习和所书写的语言代码有自己独立的认识。对于C语言,你需要知道它更贴近于机器语言而不需要了解它是看起来更“高端”的语言。我们创造编程语言的目的是为了减轻自己的负担,能够更加快速方便的创造想要的东西。如果你要选择学习C语言,你选择的目的应该是它擅长对Arduino和嵌入式单片机编程或者是它能够快速编译机器算法,而不是你认为它比你已经学过的语言更加“高端”。 让你想从事的项目来决定你要选择学习的语言。因为毕竟它们都只是机器语言中的其中一种方言。合适的选择我所认识的最高端的那些程序员从从事编程工作开始就爱做一些很浅显的事(他们中的很多人如今仍然保持这种习惯)。他们会自己做一些很简单的游戏,或者做一些搜索和可视化的实验。他们所做的每件事情都来自于他们对此的兴趣,编码对他们来说就像是在玩耍一般,这非常的有趣。不断重复对相关问题的反馈是掌握任何技能的关键。无论你选择的语言或项目是什么,请确保花费大量时间来学习它并听从指导者的建议反馈。代码语言产生的真正目的是为了帮助别人建立或者完善那些很棒的东西。无论什么语言,你的选择应永远是能够为你提供最快捷、最有效帮助的那一种。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量13553点击量12799点击量12306点击量7671点击量7620点击量6186点击量5253点击量4771点击量4503
&2016 Chukong Technologies,Inc.
京公网安备89如果语言发展到只需描述软件或游戏本身,使用这种语言写程序是怎样一种感受?
从c,到c++,再到Java,语言从面向过程逐渐过渡到面向对象,使用更简单方便,程序员的工作减少,关注点更集中,语言继续发展,如果有一种直接通过描述软件或游戏而不用关注内部运行(内部由语言自动生成,就像Java垃圾自动回收)的语言,使用后会有什么感受?
”Cortana,给我个窗口“
Cortana,我觉得这个页面应该设计得再大气一点,要高端气派但又不失优雅。Cortana卒
这种开发模式早就有了。这个语言的名字叫程序员,使用者我们称之为产品经理。
“如果有一种直接通过描述软件或游戏而不用关注内部运行(内部由语言自动生成,就像Java垃圾自动回收)的语言”现在的编程语言,就已经是这样的了,程序员不需要关心编辑器产生了什么代码,不需要管运行时内部怎么运行。当然你想关心也可以,重点是可以不关心。软硬件系统都是一层一层堆起来的,使用编程语言可以不关心它怎么实现的,实现编程语言可以不关心cpu频率不关心内存频率等等。已经有中间层做了封装工作了,例如语言运行时、操作系统。“只需描述软件或游戏本身”,难点在于如何描述,而不是实现。一个功能有限的DSL是可以实现的,但是如果想要的功能超出这个DSL的能力,开发者又不得不绕过这个DSL,直接和支撑的底层打交道。这个DSL就称为leaky abstraction[1]。例如弹一个窗口,可以简单到写"弹窗",但如果想要更多控制,就需要描述更多,这样最后这个DSL就膨胀成一门通用语言了。那这个描述性的DSL还有什么意义?所以引擎或者框架会做一个平衡,哪些部件可以用描述性的代码实现,哪些需要写过程式的,由开发者自己决定。“只需描述软件或游戏本身”,现在的软件开发,就是在描述它本身,有的需要描述很多,因为想要精确控制。有的需要描述很少,例如做个html页面,你不需要关心浏览器怎么实现渲染、网络怎么传输等等。[1]
"小娜,给我个窗口,里面有个OpenglPanel控件,还有一个D3D控件。panel要黑色背景的,三缓冲,不要剔除和模板,用vbo,shader文本内置,内容就显示我摄像头的画面,用opencv框选画面人物并标记。图像数据就放到路由器上,openwrt。那个D3d控件要版本12的,十一也可以,但其他版本就不用了,开剔除和深度,把opengl控件那标记的人物渲染到这里。""主人,这简单,还有什么需求吗?""界面要弄好看点,opengl记得封装,程序给个com的接口。""去nm的,老娘不干了!"
“那个程序猿,给我个窗口”
只要你的逻辑是完整的,也就是说,在你的描述下,这个程序只能这么写,搁给谁也只能这么写,也就是你的描述和程序在一定意义下是一一对应的,那理论上是可以的
得问产品经理。他们说的话,写的文,就是你说的语言。不过,貌似这种语言无法精确地描述需求,导致需要程序员这么一个东西来帮忙翻译。
编程讲究四门功课“说学逗唱”
多年以前用机械语言埋头奋战的人们看来 现在已经是“告诉机器你要做啥机器帮你做”级别的了
已有帐号?
无法登录?
社交帐号登录编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;&
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.&
这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
一、低级语言与高级语言
最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。
高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。
二、编译与解释
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。
解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.
1、编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM;&
2、汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如下:MASM&LX.ASM;&
3、连接:用连接程序(LINK.EXE)对目标程序进行连接,形成可执行文件(.EXE),格式如下:LINK&LX.OBJ;&
4、执行:如果结果在屏幕在显示,则直接执行可执行文件。&
5、调试:用调试程序(DEBUG.EXE)对可执行文件进行调试,格式如下:DEBUG&LX.EXE
1.&在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。
2.&由编译型语言编写的源程序需要经过编译、汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些汇编程序不能解释引用的库函数,而库函数代码又不在源程序中,此时还需要链接程序完成外部引用和目标模块调用的链接任务,最后输出可执行代码。C、C++、Fortran、Pascal、Ada都是编译实现的。
3.&解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。对于解释型Basic语言,需要一个专门的解释器解释执行&Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而效率低下。
4.&Java很特殊,Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码。Python&的也采用了类似Java的编译模式,先将Python程序编译成Python字节码,然后由一个专门的Python字节码解释器负责解释执行字节码。
&&&(Java虚拟机对字节码的执行相当于模拟一个cpu,而ruby1.8--在虚拟机还未出现前--是通过解释成语法树执行。)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156次
排名:千里之外可不可以设计一种编码只包含意思,不需要先转化成语言? | 死理性派小组 | 果壳网 科技有意思
856631人加入此小组
RT现在的计算机储存信息都是以某种自然语言或者机器语言储存的,用RT的方法行不行?一来可以节省空间,二来可以节省计算量,各国人民看新闻啊用软件啊直接翻译成需要的语言。
+ 加入我的果篮
你说的是不是摩尔斯电码啊~~
引用小懿的回应:你说的是不是摩尔斯电码啊~~别这样,你不知道摩斯电码也是要转换成字母,然后翻译成语言的么?如果转化出来的字母排列没有意义,那这条信息就相当于浪费了。我设想设计一种编码直接翻译成意思,比如:我吃苹果。然后再翻译成英文:I eat apple.
你是说设计一套规则,比如用规则里的 ++--,中国人看到明白是”我吃苹果“的意思,英国人看到明白是”I eat apple“的意思?引用落月战神的回应:别这样,你不知道摩斯电码也是要转换成字母,然后翻译成语言的么?如果转化出来的字母排列没有意义,那这条信息就相当于浪费了。我设想设计一种编码直接翻译成意思,比如:我吃苹果。然后再翻译成英文:I eat apple.
土木工程研究生,FRP
象形文字……
古典吉他控,通信工程专业
根据信息熵编码?理论可行,实际难以学习
引用小懿的回应:你是说设计一套规则,比如用规则里的 ++--,中国人看到明白是”我吃苹果“的意思,英国人看到明白是”I eat apple“的意思?我的意思是在计算机里。需要显示成人类自然语言的时候再进行翻译,翻译成中文英文呀之类之类。如果可能的话,改造成输入法,可以研发一套新的键盘,或者再加上一套世界通用语言,抑或直接用脑波输入。你把意思输入进去,想输出英文,中文,各种文都行。我讨论的是节省储存成本的问题。虽然这种方式可能只能传达某些简单的没有双关意思的信息,但是还是有非常高的新闻以及学术方面的价值。很多学术文章就不必翻来覆去的翻译了。还能更好的解决翻译抄袭的问题。学生写作文不必再讨论语法方面的问题,不必再用翻译软件什么的了。
引用白长老很萌哒乃们表黑的回应:象形文字……这个还是要先翻译成文字啊。并且很难编码。
哦,听起来像是一门世界语言,或者楼主的意思更深奥些?
世界通用语?这可是大工程啊
土木工程研究生,FRP
好吧其实我想表述的是纯图画= =引用落月战神的回应:这个还是要先翻译成文字啊。并且很难编码。
引用eggcar的回应:根据信息熵编码?理论可行,实际难以学习什么叫信息熵?我觉得不用人类学习吧,写个程序能把这种编码和其他语言互相转换就行了呗。
引用白长老很萌哒乃们表黑的回应:好吧其实我想表述的是纯图画= =但是储存二维图像的成本更高啊。
先不说不同语言之间翻译的问题,你的这个设想还是逃不开翻译这个过程,不管是在计算机里还是在键盘上还是在什么地方,既然要翻译,就要把现有的所有语言(至少是最常用的那些)都提前录入。肯定达不到节省存储空间的目的。至于你说的那个世界语言的问题,与其普及一种全新的世界语,还不如普及一门目前使用最广的语言(虽然这个仅仅是理论上的可能)。引用落月战神的回应:我的意思是在计算机里。需要显示成人类自然语言的时候再进行翻译,翻译成中文英文呀之类之类。如果可能的话,改造成输入法,可以研发一套新的键盘,或者再加上一套世界通用语言,抑或直接用脑波输入。你把意思输入进去,想输出英文,中文,各种文都行。我讨论的是节省储存成本的问题。虽然这种方式可能只能传达某些简单的没有双关意思的信息,但是还是有非常高的新闻以及学术方面的价值。很多学术文章就不必翻来覆去的翻译了。还能更好的解决翻译抄袭的问题。学生写作文不必再讨论语法方面的问题,不必再用翻译软件什么的了。
引用聊逸的回应:哦,听起来像是一门世界语言,或者楼主的意思更深奥些?引用聊逸的回应:世界通用语?这可是大工程啊是世界各种语言的通用编码,不是世界通用语。不需要人类学习,只要机器明白就行。通俗说就是写个程序能把这种编码和其他语言互相转换。
引用小懿的回应:先不说不同语言之间翻译的问题,你的这个设想还是逃不开翻译这个过程,不管是在计算机里还是在键盘上还是在什么地方,既然要翻译,就要把现有的所有语言(至少是最常用的那些)都提前录入。肯定达不到节省存储空间的目的。至于你说的那个世界语言的问题,与其普及一种全新的世界语,还不如普及一门目前使用最广的语言(虽然这个仅仅是理论上的可能)。世界通用语还有新键盘那是以后的事。现在的计算机计算速度快了许多,但是传递信息的时候依然是用的土办法。这样增加了很多无用的数据量。我的意思是先开发一套以文字的意义来进行储存的编码,意思在网络间传播,到了你的电脑里再翻译成你需要的语言。这样节省了传输和储存成本。虽然文字并不会占用很高的信息量,但是这个编码的意义目前在于各国人使用的时候不需要在各种语言之间来回翻译。至于在机器中还有更深层次的意义。你的观点我不赞同。目前的电脑操作系统都是需要预装语言的,使用时切换语言其实就是我说的这种意思。但是目前还没有脱离以某种语言作为基础的圈子。信息在网络上传播依然也是以某种语言传播的。如果以意思来传播,效率肯定会高。
C#程序设计师
引用落月战神的回应:是世界各种语言的通用编码,不是世界通用语。不需要人类学习,只要机器明白就行。通俗说就是写个程序能把这种编码和其他语言互相转换。其实本质上来说还是世界通用语,给电脑看还是给人看这只是表面现象。这种方式只是一劳永逸(全部扔给程序)的定制了翻译的准则。但是人类的语言复杂程度要远远超过现今的机器的智能水平,故而会面临很多困难,如果要避免这类困难,必然又要使得翻译准则条款重重,使用受限。另外,由于在客户机上所需要的语言情况未知,所以需要将各种语言的翻译逻辑在客户机上齐备,这代码量可想而知的大。。综上所述,我觉得这样做的意义和优势不太明显。。
古典吉他控,通信工程专业
哦 明白了,不可能。不同语言不是一一对应集
好吧,我们假设目前世界上没有英语:我们发明了一套意义表示编码规则用以传递意义,任何国家的人只需要维护本民族语言跟这套规则之间的相互翻译就可以了。大家都用着很好,觉得很爽,然后大家聚集在一起:我们给它起个名字吧!于是世界上多了一套叫做英语的规则。另:目前的计算机是以二进制传递数据的,”1001“可以表示九、nine、きゅう、?配合字符集(utf、gbk这一类的),就可以表示任意信息了引用落月战神的回应:世界通用语还有新键盘那是以后的事。现在的计算机计算速度快了许多,但是传递信息的时候依然是用的土办法。这样增加了很多无用的数据量。我的意思是先开发一套以文字的意义来进行储存的编码,意思在网络间传播,到了你的电脑里再翻译成你需要的语言。这样节省了传输和储存成本。虽然文字并不会占用很高的信息量,但是这个编码的意义目前在于各国人使用的时候不需要在各种语言之间来回翻译。至于在机器中还有更深层次的意义。你的观点我不赞同。目前的电脑操作系统都是需要预装语言的,使用时切换语言其实就是我说的这种意思。但是目前还没有脱离以某种语言作为基础的圈子。信息在网络上传播依然也是以某种语言传播的。如果以意思来传播,效率肯定会高。
语言爱好者
你这个东西在机器翻译领域被称为Interlingua。最理想的机器翻译的过程是这样的:源语言文本--源语言语法结构--源语言语义表示--Interlingua--目标语言语义表示--目标语言语法结构--目标语言文本。可惜现在的机器翻译一般只能做到语法结构这一层,即从源语言的语法结构直接转换成目标语言的语法结构。也就是说,lz说的那种东西现在还没有开发出来。
引用Maigo的回应:你这个东西在机器翻译领域被称为Interlingua。最理想的机器翻译的过程是这样的:源语言文本--源语言语法结构--源语言语义表示--Interlingua--目标语言语义表示--目标语言语法结构--目标语言文本。可惜现在的机器翻译一般只能做到语法结构这一层,即从源语言的语法结构直接转换成目标语言的语法结构。也就是说,lz说的那种东西现在还没有开发出来。牛逼,这才是正解!!!
这跟“计算机存储”、“节省空间”、“节省计算量”有么子关系?
引用zorkist的回应:这跟“计算机存储”、“节省空间”、“节省计算量”有么子关系?你看明白了么?
C#程序设计师
引用落月战神的回应:你看明白了么?或许是我没看明白,不过老实说我感觉你的思想里面和节省空间实在没什么关系。。
话说软件界面的多语言支持好像都是这样做的把,当然,其实还是人工翻译对应按钮神马滴
可不可以设计一种编码只包含意思,不需要先转化成语言?blockquote]我怎么隐约看见了四个大字,机器语言。。。
虽然没看懂……但是我觉得“语言”就是“用编码表达意思”的东西……
引用鲜肉粽子的回应:或许是我没看明白,不过老实说我感觉你的思想里面和节省空间实在没什么关系。。如果我想表明“我吃苹果”这个概念,应该只需要“我,吃,苹果”三个概念,编码和储存都有优势。。如果要用英文表述,需要“I eat apple” 这十个ASCII码。用ASCII码储存的信息不都一定是有意义的,就像不是所有字母的排列都是单词一样。但是用这种编码方式,所有的信息都会有意思。就是任意生成的字符串都会有意义。所以,信息的密度在代码内就升高了。信息当然就缩短了。PS:你居然逼我凌晨5:47回你的帖.......
引用小懿的回应:好吧,我们假设目前世界上没有英语:我们发明了一套意义表示编码规则用以传递意义,任何国家的人只需要维护本民族语言跟这套规则之间的相互翻译就可以了。大家都用着很好,觉得很爽,然后大家聚集在一起:我们给它起个名字吧!于是世界上多了一套叫做英语的规则。另:目前的计算机是以二进制传递数据的,”1001“可以表示九、nine、きゅう、?配合字符集(utf、gbk这一类的),就可以表示任意信息了”苹果“机器里咋存? 数字和物品能一样吗?
问题是目前的计算机硬件只能识别01,你说的这个东西应该跟ASCII是一个级别的,直接面对机器,跟二进制转换,(当然,如果计算机技术有了新的发展另当别论)但是容量要比ASCII大很多。ASCII有128个意义,每个ASCII码占8个二进制位,那如果要在这个层面上囊括常用的,甚至所有的意义,每个意义占用的内存将非常大~~~引用落月战神的回应:如果我想表明“我吃苹果”这个概念,应该只需要“我,吃,苹果”三个概念,编码和储存都有优势。。如果要用英文表述,需要“I eat apple” 这十个ASCII码。用ASCII码储存的信息不都一定是有意义的,就像不是所有字母的排列都是单词一样。但是用这种编码方式,所有的信息都会有意思。就是任意生成的字符串都会有意义。所以,信息的密度在代码内就升高了。信息当然就缩短了。PS:你居然逼我凌晨5:47回你的帖.......
引用鲜肉粽子的回应:其实本质上来说还是世界通用语,给电脑看还是给人看这只是表面现象。这种方式只是一劳永逸(全部扔给程序)的定制了翻译的准则。但是人类的语言复杂程度要远远超过现今的机器的智能水平,故而会面临很多困难,如果要避免这类困难,必然又要使得翻译准则条款重重,使用受限。另外,由于在客户机上所需要的语言情况未知,所以需要将各种语言的翻译逻辑在客户机上齐备,这代码量可想而知的大。。综上所述,我觉得这样做的意义和优势不太明显。。刚刚没看见。不好意思。我感觉还是有意义,现在windows也不是所以语言都带啊。机器接收了这种代码以后终端机翻译成你需要的语言就行啊。中国卖的都装中文,其他有需要再去下载啊。如果所有的计算机都这样处理过以后,大家不用那些翻译的乱七八糟的软件就可以浏览全语言的网站啊。学报期刊发表了电子学术报告不用那些不专业的人翻译就能让所有人看懂多好的千秋万代的事啊!
字符集引用落月战神的回应:”苹果“机器里咋存? 数字和物品能一样吗?
引用小懿的回应:问题是目前的计算机硬件只能识别01,你说的这个东西应该跟ASCII是一个级别的,直接面对机器,跟二进制转换,(当然,如果计算机技术有了新的发展另当别论)但是容量要比ASCII大很多。ASCII有128个意义,每个ASCII码占8个二进制位,那如果要在这个层面上囊括常用的,甚至所有的意义,每个意义占用的内存将非常大~~~肯定有办法让占用减少的。不可能从思想翻译成语言再翻成数据要比思想直接翻成数据占得少。我是为什么想到这个的,我们当时在讨论数据压缩的问题。我觉得压缩到最极致的方式就是只包括最必要的信息。“我吃苹果”这个信息其实很简单,你要用10位ASCII码甚至Unicode来表述必然不够简洁。
引用小懿的回应:字符集你用字符集来表示是翻译成什么语言先?哪个字符集能表述所有的语言?别跟我说Unicode,Unicode重复性非常高吧。中文和日文表述相同意思的字不要太多啊。你确定你看懂我说的是什么意思了么?
我觉得解决内存这个问题,还是从硬件角度来解决更实际写,如果计算机能识别更多信号(比如没电压识别为0、1v识别为1、2v识别为2····),对内存的压力将减少不小,以目前的硬件水平,从软件方面解决几乎没有可能~~~当然,硬件解决了,不同语言语义之间的转换也是个难题。即使同意语言之间,也存在很多不同类型的歧义。交叉歧义和组合歧义还好点,真歧义只能根据上下文判断的,目前的软件基本无能为力。比如:我把球拍卖了。可以理解为:我拍卖了一个有纪念意义的球也可以理解为:我卖了一个球拍。引用落月战神的回应:肯定有办法让占用减少的。不可能从思想翻译成语言再翻成数据要比思想直接翻成数据占得少。我是为什么想到这个的,我们当时在讨论数据压缩的问题。我觉得压缩到最极致的方式就是只包括最必要的信息。“我吃苹果”这个信息其实很简单,你要用10位ASCII码甚至Unicode来表述必然不够简洁。
我明白你的意思,我说的那个字符集不是目前的字符集我的意思是:不考虑翻译不同语言语义之间的转换问题,实现一个实现了所有语言的字符集,可以近似解决这个问题,至少表示名词没有问题。引用落月战神的回应:你用字符集来表示是翻译成什么语言先?哪个字符集能表述所有的语言?别跟我说Unicode,Unicode重复性非常高吧。中文和日文表述相同意思的字不要太多啊。你确定你看懂我说的是什么意思了么?
顺便说下,据我所知,微软的being是一个语义搜索引擎,不过貌似效果并不是很好。如果你能解决歧义这个问题,前途大大滴····引用小懿的回应:我觉得解决内存这个问题,还是从硬件角度来解决更实际写,如果计算机能识别更多信号(比如没电压识别为0、1v识别为1、2v识别为2····),对内存的压力将减少不小,以目前的硬件水平,从软件方面解决几乎没有可能~~~当然,硬件解决了,不同语言语义之间的转换也是个难题。即使同意语言之间,也存在很多不同类型的歧义。交叉歧义和组合歧义还好点,真歧义只能根据上下文判断的,目前的软件基本无能为力。比如:我把球拍卖了。可以理解为:我拍卖了一个有纪念意义的球也可以理解为:我卖了一个球拍。
你说的还是有道理的。不过我坚信问题能解决引用小懿的回应:顺便说下,据我所知,微软的being是一个语义搜索引擎,不过貌似效果并不是很好。如果你能解决歧义这个问题,前途大大滴····
引用落月战神的回应:如果我想表明“我吃苹果”这个概念,应该只需要“我,吃,苹果”三个概念,编码和储存都有优势。。如果要用英文表述,需要“I eat apple” 这十个ASCII码。用ASCII码储存的信息不都一定是有意义的,就像不是所有字母的排列都是单词一样。但是用这种编码方式,所有的信息都会有意思。就是任意生成的字符串都会有意义。所以,信息的密度在代码内就升高了。信息当然就缩短了。PS:你居然逼我凌晨5:47回你的帖.......想起一个天津话的笑话。How
much?吃嘛好?嘛好吃?果然都有意义。苹果 吃我,好怕怕。我苹果吃,跟日本话似的,哟西!
如果你能把你的这个设想完全实现,其意义觉得不亚于互联网的发明~~互联网实现了世界范围内的信息共享你的这个设想将信息共享的门槛降低到几乎没有门槛····引用落月战神的回应:你说的还是有道理的。不过我坚信问题能解决
引用落月战神的回应:你看明白了么?哦,我又仔细仔细看,有点看明白了。 假如人类所有的思想、语言可以用200万个以内的单词,呃,“意思”记录。那么一个“意思”需要21位二进制数来编码。“我吃苹果”, 21*4=84, 也就是84/8=10.5 byte。I eat apple, 9个字母加2个空格,就是11byte。节省了0.5byte。好伟大的想法。
C#程序设计师
引用落月战神的回应:如果我想表明“我吃苹果”这个概念,应该只需要“我,吃,苹果”三个概念,编码和储存都有优势。。如果要用英文表述,需要“I eat apple” 这十个ASCII码。用ASCII码储存的信息不都一定是有意义的,就像不是所有字母的排列都是单词一样。但是用这种编码方式,所有的信息都会有意思。就是任意生成的字符串都会有意义。所以,信息的密度在代码内就升高了。信息当然就缩短了。PS:你居然逼我凌晨5:47回你的帖.......虽然可以理解这样做的设想,也就是将具体语言中的语素成分一一映射到计算机的代码,使得计算机在处理的时候根据存储的代码将语素直接拼接起来。但是——语言的复杂程度实在是太高,单词A+B可能和单词B+A的意思会完全不一样。因此,在你的映射表里面除了映射A和B的本意,还可能需要把A+B和B+A这两种都加入进来,所以事实上这样最终结果还是会非常复杂。如果想要降低复杂程度同时避免歧义,就需要源文件需要按照一定的规则去进行编写,这显然也是不实际的。所以与其去考虑这样映射,倒不如集中力量研究人工智能。话说siri的出现实在是感觉很惊艳啊。。。
+1引用鲜肉粽子的回应:虽然可以理解这样做的设想,也就是将具体语言中的语素成分一一映射到计算机的代码,使得计算机在处理的时候根据存储的代码将语素直接拼接起来。但是——语言的复杂程度实在是太高,单词A+B可能和单词B+A的意思会完全不一样。因此,在你的映射表里面除了映射A和B的本意,还可能需要把A+B和B+A这两种都加入进来,所以事实上这样最终结果还是会非常复杂。如果想要降低复杂程度同时避免歧义,就需要源文件需要按照一定的规则去进行编写,这显然也是不实际的。所以与其去考虑这样映射,倒不如集中力量研究人工智能。话说siri的出现实在是感觉很惊艳啊。。。
C#程序设计师
如果LZ有接触过多语言的程序设计,就会知道,通常程序的多语言就是基于映射机制的。比方说一个对话框上有一个确定按钮,在设计时就会给这个按钮一个类似于原始value的东西,然后根据客户的语言设置和按钮的value,去对应的语言文件里查到这个ID对应的本地化语言字符串并显示给客户。
对于简单的一些字串,比如确定取消忽略等等,当然可以将同样字串的部分设定为同样的原始value,用同样一个映射去查找对应字串。但是对于大段的复杂描述,则需要单独的对应,而不是简单的1=am,2=is,3=are,因为不同的语言语序的组织方式等方面都有千差万别,故完全不可能做到意思不走样。
很可能你会考虑在转换的过程中引入智能机制进行诸如元素的顺序排列,歧义检查等等(话说歧义这个问题连人都很难处理呢)。所以说,人工智能才是问题的关键。
这个真不行,用施氏食狮史都是欺负你,随便一首唐诗要你命啊,更别说嘉靖的“卿齿与德,何如”这种了。。引用落月战神的回应:如果我想表明“我吃苹果”这个概念,应该只需要“我,吃,苹果”三个概念,编码和储存都有优势。。如果要用英文表述,需要“I eat apple” 这十个ASCII码。用ASCII码储存的信息不都一定是有意义的,就像不是所有字母的排列都是单词一样。但是用这种编码方式,所有的信息都会有意思。就是任意生成的字符串都会有意义。所以,信息的密度在代码内就升高了。信息当然就缩短了。PS:你居然逼我凌晨5:47回你的帖.......
引用在火之星的回应:这个真不行,用施氏食狮史都是欺负你,随便一首唐诗要你命啊,更别说嘉靖的“卿齿与德,何如”这种了。。咱们别讨论这种专门坑爹的东西行么?目前只限于现代文并且是学术或者新闻类文章。
其实“施氏食狮史”跟“张三吃馄饨的故事”,对于计算机而言,没什么区别。因为计算机不读音,只把句子分解为词,再根据词的组合和语义表理解其语义,然后进行转换~引用落月战神的回应:咱们别讨论这种专门坑爹的东西行么?目前只限于现代文并且是学术或者新闻类文章。
引用小懿的回应:其实“施氏食狮史”跟“张三吃馄饨的故事”,对于计算机而言,没什么区别。因为计算机不读音,只把句子分解为词,再根据词的组合和语义表理解其语义,然后进行转换~明显不一样,日照香炉生紫烟,意思记载成了:在日光照耀下香炉峰紫气蒸腾烟雾缭绕。好吧,咱就算李白是这个土鳖了点的意思,那意思怎么倒推回原始的记载?光照香炉紫雾绕?一个论语,各家注解各家的,谁都说孔子当时就是那个意思,完了这意思还都不一样,你这按谁的算?还没算易经呢,这些都是坑爹一样的存在。。。
文言文的语序跟现代文不一样,应该当成是一种新的语言。你说的这个问题不只是文言文,各种不同的语言之间都存在。how are you 如果教条的翻译的话,就是:怎么是你。这些都是要解决的问题。引用在火之星的回应:明显不一样,日照香炉生紫烟,意思记载成了:在日光照耀下香炉峰紫气蒸腾烟雾缭绕。好吧,咱就算李白是这个土鳖了点的意思,那意思怎么倒推回原始的记载?光照香炉紫雾绕?一个论语,各家注解各家的,谁都说孔子当时就是那个意思,完了这意思还都不一样,你这按谁的算?还没算易经呢,这些都是坑爹一样的存在。。。
“意思”这个东西本身并不复杂,常用的主谓宾定状补结构就基本能表达清楚了,如果有优化的映射方式,确实可以压缩信息的储存长度,语义网络就是这种概念的一类实现。但是,从一种语言的文字中提炼出意思的过程相当复杂,至今没有一种自然语言能够被电脑完全正确地分析出“意思”,这涉及近乎完美的人工智能,在目前连图灵测试都过不了的人工智能技术水平下,还是镜花水月。在可预见的将来,还无法跨越这个壁垒。所以,LZ的想法是可实现的,但是其数据源还无法获取,故不现实。
我觉得,目前ai水平的发展,一方面制约于算法、硬件的发展,另一方面,即使我们能完全通过机器,复制一个人的大脑,那么还需要几十年的时间来“填充”这个大脑。就好比刚出生的小孩子,要经过几十年的不断学习,才能具备成人的智慧,如果要具备某一领域的专业知识,还要进一步深造。造出一个只会跟你扯八卦的只能机器人,其学术意义很大,但是商业意义就很小了,那么一个具备高智能的机器从诞生到使用也需要几十年的时间的。引用fanmit的回应:“意思”这个东西本身并不复杂,常用的主谓宾定状补结构就基本能表达清楚了,如果有优化的映射方式,确实可以压缩信息的储存长度,语义网络就是这种概念的一类实现。但是,从一种语言的文字中提炼出意思的过程相当复杂,至今没有一种自然语言能够被电脑完全正确地分析出“意思”,这涉及近乎完美的人工智能,在目前连图灵测试都过不了的人工智能技术水平下,还是镜花水月。在可预见的将来,还无法跨越这个壁垒。所以,LZ的想法是可实现的,但是其数据源还无法获取,故不现实。
(C)2016果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号

我要回帖

更多关于 理解孩子的语言 的文章

 

随机推荐