当前位置:  开发笔记 > 编程语言 > 正文

有可读的编程语言吗?

如何解决《有可读的编程语言吗?》经验,为你挑选了21个好方法。

我的意思是,是否有编码语言与人类风格编码?例如:

Create an object called MyVar and initialize it to 10;
Take MyVar and call MyMethod() with parameters. . .

我知道它不是那么有用,但创建这样的语法会很有趣.



1> Paul Dixon..:

LOLCODE怎么样?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

简单本身!


任何引入"O NOES"异常处理程序的语言都会得到我的投票!
和小猫.不要忘记teh kittenz.
这不是人类可读的,只有1337 h4x0rz ;-)
它认为EHaskins的意思是"B357 L4N6u463 3var !!! 1 !!! 1111!" 下次,EHaskins,请使用语法检查.(有人想和我一起开始LOL Grammerz-Check吗?)
它已经通过利润率击败了COBOL.

2> James Curran..:

COBOL很像那样.

SET MYVAR TO 10.
EXECUTE MYMETHOD with 10, MYVAR.

维基百科的另一个样本:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

奇怪的是,尽管它的设计可以像英语一样可读,但大多数程序员完全用奇怪的命名约定来破坏它:

SET VAR_00_MYVAR_PIC99 TO 10.
EXECUTE PROC_10_MYMETHOD with 10, VAR_00_MYVAR_PIC99.


Cobol开发人员是否听力受损?所有的喊叫是什么!?
旧的C++笑话:创建了面向对象的Cobol版本,但名称太麻烦了.它被称为ADD_ONE_TO_COBOL_GIVING_OBJECT_ORIENTED_COBOL.
@dreamlax当时没有发明小写字母.
从成本中获取最终费用是否真的比int FinalCost =成本 - 折扣更容易?
有一颗心@dreamlax ......他们老了!;-p
COBOL的使用削弱了人们的思想; 因此,它的教学应被视为刑事犯罪.[我们怎么说真话可能会受伤?Edsger W.Dijkstra,1975年6月18日](http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html)
哇... COBOL很酷.

3> tovare..:

通知7

Inform 7也许是我觉得最适合用人类语言设计的语言.它非常适用于编写冒险游戏.

它基于基于规则的语义,您可以编写大量描述对象与其位置之间关系的规则.例如,以下部分是Inform 7程序:

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase."  Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman: 
    say "The salesman bores you with a discussion of life  insurance policies.  From his briefcase he pulls some paperwork which he hands to you.";
    move the insurance paperwork to the player.

维基百科引用的例子


这真是太棒了.我以前从未见过这个.

4> Chris Serra..:

AppleScript非常接近,尽管这显然取决于平台.

这是打开iTunes和播放播放列表的脚本

tell application "iTunes"
    activate
    play playlist "Party Shuffle"
end tell

来源:AppleScript示例


然而,AppleScript的类似英语的语法是它的弱点,因为它非常*特别且不太明显.
我不得不对苹果脚本程序进行一些修改,它感觉就像一个只读语言.有很多方法可以为人类表达一些东西,但很少有人能够理解.另外google搜索applescript命令很痛苦,因为它看起来就像标准文本一样.

5> Mauricio Sch..:

以"自然语言"推动编程的项目本质上注定要失败.

- Edsger W.Dijkstra,我们如何讲述可能伤害的真相?



6> Cruachan..:

这是20世纪80年代早期的"下一件大事",我在前几年花了很多时间作为一名在"自然"中工作的编码员,这被认为是新一代4GL(第四代语言)中最好的一种.旨在使数据访问(在本例中为ADABAS数据库)人类可读.

当然它完全没有类型.我们最终得到的只是冗长的结构化代码.这两种产品仍然存在,但你从来没有听说过它们,这证明了它的死胡同.

实际上在那个时期似乎有一种普遍的愿望,即超越"编程",进入某种2001年启发的AI天堂.Oracle非常热衷于代码生成,我还记得一些名为"最后一个"的产品,该产品作为一种产品销售给管理者,可自动生成您想要的任何程序,并使您的所有编程人员都多余.似乎没有达到预期;-)

值得记住的是,SQL最初在某些方面上市,作为一种允许管理层直接查询其数据的方法.我甚至被派去学习基本的SQL课程(在一个大型的国家运输组织,在轨道上运行 - 钢铁品种),其中包括初级管理类型,因为他们计划将基本查询工具放在他们手中.真是个灾难.

也许它可能在50年内有所不同,但在目前的游戏编码阶段需要一定的思想和实现清晰度,最好通过为这些目的设计的专用语法来调解,而不是对自然语言的任何近似,这是不清楚和模棱两可的.最接近的近似可能是物理学,其中主题的本质在于所使用的数学(认为是物理学的编程语言)而不是冗长的词汇.

添加

我忘记了,除了COBOL之外还有PL/1,有时因为允许美国宇航局把一个人放在月球上,它就像COBOL一样冗长,并且更加努力地成为"经理可读".这就是为什么现在没人真正听说过:-)



7> Mauricio Sch..:

厨师!任何人都可以阅读食谱吗?看看你好世界!

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. 
Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. 
Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. 
Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. 
Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. 
Pour contents of the mixing bowl into the baking dish.

对不起,如果这不是一个严肃的答案,但这是非常棒的.:-)


我不知道......似乎有点油腻.
我不认为这会好吃......但那只是我.

8> justin.m.cha..:

所有语言都是"人类可读的".:)别人怎么能够创建它?话虽这么说,支持DSL的语言可以非常直观,比如Boo.


+1为第一个评论。您有一个严肃的观点:经过一点培训,(大多数)编程语言比自然语言更容易“精确”地阅读。

9> Rob Walker..:

让编程语言像(详细的)普通语言一样,就像要求人们在法律术语中一直交谈一样.所有额外的措辞都会妨碍你.

理想的编程语言应该具有尽可能透明的语法,并让程序背后的概念脱颖而出.显然,在快速学习曲线和具有最小但模糊的语法(想想Perl,甚至K)之间存在折衷.



10> b3...:

通过创建一组规则,可以像这样在Prolog中进行逻辑编程.您可以为特定域构建语法(或下载一个),创建知识库然后进行查询.定义语法后,您可以执行以下操作:

bob is a parent of tim.
mary is a parent of bob.

?- X is a grandparent of tim.
X = mary

?- jim is a parent of bob.
false



11> Chris Vest..:

我看到莎士比亚的编程语言尚未被提及.

这些程序被编码为看起来像莎士比亚戏剧,戏剧中的个性角色是可以容纳数字的变量,并且戏剧中的各种短语操纵角色和他们持有的数字.例如,"说出你的想法"命令一个角色输出他的价值.



12> Bob King..:

Applescript:

tell application "Finder"
 set the percent_free to ¬
 (((the free space of the startup disk) / (the capacity of the startup disk)) * 100) div 1
end tell
if the percent_free is less than 10 then
 tell application (path to frontmost application as text)
 display dialog "The startup disk has only " & the percent_free & ¬
 " percent of its capacity available." & return & return & ¬
 "Should this script continue?" with icon 1
 end tell
end if



13> Paul Nathan..:

我可以阅读C.这意味着它是人类可读的(因为我是一个人).这对普通人来说太简洁了.编程语言的一般概念是最大化有关计算机应如何在给定行中操作的信息.

这就是Ruby如此受欢迎的原因; 它最大限度地减少了文本中的功能.英语(或任何其他自然语言)是一种非常不精确,低信息/字符的语言.

总而言之,它是:(i)之前完成的和(ii)已知的较弱的想法.


是的,对.现在,我怎么用C编码讽刺,再次...... :-)我认为你真正的意思是它是模棱两可的,而不是低信息.

14> Johnno Nolan..:

这实际上是一个热门话题.

对于初学者 - 什么是人类可读?

中国读者不能读俄语,反之亦然.你缩小你的域名,例如中国药剂师写一个你可以围绕它设计一种语言的描述.这将是人类可读的.

如语言属于Domain Specific Languages的范畴.



15> Martin..:

SQL

SELECT name, address FROM customers WHERE region = 'Europe'



16> Kirk Strause..:

是.它被称为COBOL,人们通常会厌恶它.



17> Darius Bacon..:

Inform 7是我见过的最成功的系统.它比其他答案中列出的更粗糙的系统有两个优点:它适用于特别适合自然语言(交互式小说)的领域,并且它基于更多的计算语言学知识对输入代码进行更精细的分析,而不仅仅是传统的编程语言语法碰巧使用英语单词而不是大括号等.



18> Robert P..:

Perl,有些人声称.

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";


@ ^ {} __ +&*$%^£%))_这与您的示例相同,但以不同的方式编写.嗯 - 不完全,但这就是perl经常看起来的样子.
但它是非常人性化的 - 没有多少语言你可以在键盘上猛击头脑并提出一个工作程序.当然这意味着它也可以写猫

19> BoltBait..:

谷歌搜索"自然语言编程",你会发现很多信息(包括为什么这是一个坏主意).



20> SquareCog..:

表达的清晰度很重要.

但是,思想的清晰度远非如此重要.



21> Ken Liu..:

HyperTalk及其后代AppleScript的设计与英语类似.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有