هل هناك لغة برمجة يمكن للإنسان قراءتها؟[مغلق]

StackOverflow https://stackoverflow.com/questions/202750

  •  03-07-2019
  •  | 
  •  

سؤال

أعني، هل هناك لغة مشفرة ذات أسلوب تشفير بشري؟على سبيل المثال:

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

أعلم أنها ليست مفيدة جدًا، ولكن قد يكون من المثير للاهتمام إنشاء مثل هذه القواعد.

هل كانت مفيدة؟

المحلول

كوبول هو الكثير من هذا القبيل.

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.

نصائح أخرى

وماذا عن LOLCODE ؟

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

والبساطة نفسها!

إعلام 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.

مثال مقتبس من ويكيبيديا

وابليسكريبت جميلة قريبة من ذلك، على الرغم من أن من الواضح أن نظام أساسي التابعة.

وهنا برنامج نصي لفتح اي تيونز ولعب قائمة التشغيل

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

المصدر: ابليسكريبت أمثلة

<اقتباس فقرة>   

والمشاريع التي تعزز البرمجة في   "اللغة الطبيعية" هي في جوهرها   محكوم عليها بالفشل.

و- إدسجير W.Dijkstra، كيف نقول الحقائق التي قد يضر؟

كان هذا هو "الشيء الكبير التالي" في أوائل الثمانينيات تقريبًا وقضيت الكثير من أول عامين لي كمبرمج أعمل في "NATURAL"، والتي كان من المفترض أنها الأفضل في المجموعة الجديدة من 4GLs (لغات الجيل الرابع) والتي تم تصميمها لجعل الوصول إلى البيانات (في هذه الحالة إلى قاعدة بيانات ADABAS) قابلاً للقراءة البشرية.

بالطبع لم تفعل شيئًا من هذا القبيل على الإطلاق.كل ما انتهى بنا الأمر إليه كان كودًا مطولًا وسيئ التنظيم.لا يزال كلا المنتجين موجودين، لكنك لم تسمع بهما من قبل، وهو ما يثبت مدى الطريق المسدود الذي كان عليه الأمر.

في الواقع، في تلك الفترة، بدا أن هناك رغبة عامة في الانتقال إلى ما هو أبعد من "البرمجة" إلى نوع من جنة الذكاء الاصطناعي المستوحاة من عام 2001.لقد كانت شركة Oracle حريصة حقًا على إنشاء الأكواد البرمجية وأتذكر ببعض الاهتمام منتجًا يسمى "المنتج الأخير" الذي تم تسويقه للمديرين كمنتج من شأنه أن يولد تلقائيًا أي برنامج تريده ويجعل جميع موظفي البرمجة لديك زائدين عن الحاجة.يبدو أنه لم يرق إلى مستوى التوقعات ;-)

من الجدير بالذكر أنه تم تسويق SQL في الأصل في بعض الأوساط كوسيلة للسماح للإدارة بالاستعلام عن بياناتها مباشرة.لقد تم إرسالي أيضًا إلى دورة تدريبية لتعلم لغة SQL الأساسية (في مؤسسة نقل وطنية كبيرة تعمل على القضبان - مجموعة الصلب) حيث تم تضمين أنواع الإدارة المبتدئة لأن لديهم خططًا لوضع أدوات الاستعلام الأساسية بين أيديهم.ما هي كارثة أن كان.

ربما قد يكون الأمر مختلفًا خلال 50 عامًا، ولكن في المرحلة الحالية من برمجة اللعب تتطلب وضوحًا معينًا في الفكر والتنفيذ والذي يتم التوسط فيه بشكل أفضل من خلال بناء جملة مخصص مصمم لهذه الغايات، وليس أي تقريب للغة طبيعية غير واضحة وغامضة .ربما يكون أقرب تقدير تقريبي هو الفيزياء حيث يكون جوهر الموضوع في الرياضيات المستخدمة (فكر في لغة برمجة للفيزياء) وليس في الكلمات المطولة.

تمت الإضافة

كنت أنسى، بصرف النظر عن COBOL، كان هناك أيضًا PL/1، والذي يُنسب إليه الفضل في وقت ما في السماح لناسا بوضع رجل على القمر، وكان مطولًا تمامًا مثل COBOL وحاول جاهدًا أن يكون "قابلاً للقراءة من قبل المدير".ولهذا السبب لم يسمع أحد عنها الآن أيضًا :-)

الشيف ! يمكن لأي شخص قراءة الوصفات الصحيحة؟ ها مرحبا العالم !

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.

وعذرا إذا لم تكن إجابة خطيرة، ولكن هذا هو وسيلة رهيبة. : -)

وكل اللغات هي "قراءة الإنسان. :) وإلا كيف سيكون قادرا على إنشائه شخص ما؟ أن يقال، واللغات التي تدعم تراخيص اشتراك الجهاز يمكن أن يكون بديهية لا يصدق مثل بو .

وجود لغة برمجة قراءة مثل (مطول) اللغة العادية، سيكون مثل إلزام الناس على التحدث طوال الوقت في الكلام القانوني. كل إسهاب اضافية يحصل فقط في الطريق.

ويجب أن يكون هناك لغة برمجة مثالية بناء الجملة التي يكون شفافا بقدر الإمكان، والسماح للمفاهيم وراء هذا البرنامج تبرز. من الواضح أن هناك مفاضلة بين وجود منحنى التعلم بسرعة، وبعد تركيب الحد الأدنى ولكن غامضة (اعتقد بيرل، أو حتى K).

وعن طريق إنشاء مجموعة من القواعد، فمن الممكن أن تفعل البرمجة المنطقية في حاسوب مثل هذه. يمكنك بناء نحوي (أو تحميل واحد) لمجال معين، وخلق قاعدة معرفية وثم الاستعلام عليه. بعد تحديد قواعد اللغة الخاصة بك هل يمكن أن تفعل شيئا مثل:

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

وأرى شكسبير لغة البرمجة حتى الآن لم يتم ذكرها.

ويتم ترميز هذه البرامج لتبدو وكأنها مسرحيات شكسبير، والشخصيات individial في مسرحية يجري المتغيرات التي يمكن أن تعقد الأرقام والعبارات المختلفة في مسرحية التلاعب الشخصيات وعدد يحملونها. على سبيل المثال، "الكلام عقلك" أوامر شخصية لإخراج قيمة له.

ابليسكريبت :

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

وأستطيع أن أقرأ C. وهذا يعني انه يمكن قراءته بواسطة الإنسان (لأنني إنسان). انها مجرد مقتضب جدا بالنسبة للشخص العادي. المفهوم العام لغات البرمجة هو تحقيق أقصى قدر من المعلومات حول كيفية عمل الكمبيوتر في خط معين.

وهذا هو السبب روبي هي شعبية جدا. ذلك يزيد من وظيفة في الحد الأدنى من النص. الإنجليزية (أو أي لغة طبيعية أخرى غيرها) هي غير دقيقة جدا، المعلومات منخفضة / لغة الحرف.

وباختصار، هو: (أ) القيام به قبل و (ب) فكرة أضعف المعروفة.

وهذا هو في الواقع موضوعا ساخنا.

وبالنسبة للمبتدئين - ما هو الإنسان للقراءة

وA-القارئ الصيني لا يمكن قراءة الروسي والعكس بالعكس. هو أنت تضييق المجال على سبيل المثال للصيادلة الصينية كتابة perscription هل يمكن تصميم لغة حول ذلك. والتي من شأنها أن تكون <م> الإنسان للقراءة .

ومثل لغة تندرج تحت مظلة المجال لغات محددة .

وSQL

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

نعم. انه دعا كوبول ، والناس عموما يكرهون ذلك.

إبلاغ 7 هو النظام الأكثر نجاحا هذا رأيت. فقد اثنين من المزايا أكثر من النظم أغلظ المدرجة في إجابات أخرى هنا: انها لمجال مناسب بشكل خاص للغة الطبيعية (الخيال التفاعلية)، وأنه لا تحليل مربي الحيوانات من إدخال رمز بناء على المزيد من العلم الحسابية، اللغويات، وليس مجرد التقليدية قواعد البرمجة اللغوية أن يحدث لاستخدام الكلمات الإنجليزية بدلا من الأقواس، وما إلى ذلك.

وبيرل، يدعي البعض.

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

هل جوجل للبحث عن "لغة البرمجة الطبيعية" وستجد الكثير من المعلومات (بما في ذلك لماذا هذا هو فكرة سيئة).

وضوح التعبير هو المهم.

ولكن وضوح الفكر هو أبعد، أكثر أهمية بكثير.

HyperTalk و سليل لها <لأ href = "HTTP: //en.wikipedia. غزاله / ويكي / ابليسكريبت "يختلط =" نوفولو noreferrer "> ابليسكريبت تم تصميمها لتكون مشابهة للغة الإنجليزية.

وVB هو أقرب ما أستطيع أن أفكر في واحد:

إذا MyLife.Sucks ثم MyLife.End عدا MyLife.Continue

وبالتأكيد، إرلانج.

-module(listsort).
-export([by_length/1]).

 by_length(Lists) ->
    F = fun(A,B) when is_list(A), is_list(B) ->
            length(A) < length(B)
        end,
    qsort(Lists, F).

 qsort([], _)-> [];
 qsort([Pivot|Rest], Smaller) ->
     qsort([ X || X <- Rest, Smaller(X,Pivot)], Smaller)
     ++ [Pivot] ++
     qsort([ Y ||Y <- Rest, not(Smaller(Y, Pivot))], Smaller).

وأنا إنسان، انها لغة برمجة، ويمكنني قراءتها. أنا لا أعرف ما أي من ذلك يعني، ولكن أرى الكثير من الكلمات الإنجليزية هناك، على ما أعتقد.

و(اللسان في خده بشدة).

وتراخيص اشتراك الجهاز يمكن أن تكون طبيعية المظهر جدا. انظر هذا المثال والتي تم إنشاؤها باستخدام <أ href ل = "http://msdn.microsoft.com/en-us/library/dd129869.aspx" يختلط = "نوفولو noreferrer"> MGrammar :

test "Searching google for watin"
    goto "http://www.google.se"
    type "watin" into "q"
    click "btnG"
    assert that text "WatiN Home" exists
    assert that element "res" exists
end

كوبول كان القصد منه أن يقرأ من قبل المديرين، ولها "كلمات ضجيج" لجعل أنه أكثر قابلية للقراءة.

والشيء المضحك هو، فإنه يقرأ قليلا مثل DSL مطول.

ويجري أكثر إنسانية قابلة للقراءة من معظم كان واحدا من نقاط البيع في وقت مبكر من أدا. أجد أنه من حجة سخيفة في هذه الأيام، لأن أي مهمة معقدة sufficently في أي لغة سوف تتطلب practicioner المختصة لفهم. ومع ذلك، فإنه تغلب على bejeezus من اللغات C-بناء الجملة. يمكن لها أساليب الترميز المهيمنة تعزيز هذا التأثير أيضا. على سبيل المثال، مقارنة الحلقات في بيان إذا: آدا:

if Time_To_Loop then
   for i in Some_Array loop
      Some_Array(i) := i;
   end loop;
end if;

وC:

if (timeToLoop != 0) {
   for (int i=0;i<SOME_ARRAY_LENGTH;i++) {
      someArray[i] = i;
   }
}

والرمز C ستبحث أسوأ من ذلك إذا كنت تدوين المجرية مثل مايكروسوفت، ولكن أحاول أن يكون لطيفا. : -)

والسؤال للاهتمام. سؤالك يمكن قراءتها ك "<م> هل هناك أي لغة البرمجة التي يمكن قراءتها بسهولة من قبل البشر ؟"، وإلا ك "<م> هل هناك لغة الإنسان التي يمكن استخدامها لبرمجة ؟ ". كل الاجابات هنا ركزت على السابق، لذلك اسمحوا لي أن أحاول الإجابة على هذا الأخير.

هل سمعت من السنسكريتية؟ وهي اللغة الهندية القديمة التي تستند اللغات الهندية الحديثة مثل الهندية.

ويكي

/ السنسكريتية

ولقد تم الاستماع لسنوات أنها دقيقة وكاملة بما يكفي لاستخدامه، كما هو، باعتباره لغة عالية المستوى على جهاز كمبيوتر. طبعا ...، كنت في حاجة الى مترجم لتحويل تعليمات السنسكريتية إلى لغة الآلة. وأنا أعلم أن السيناريو ونعم، هو دقيق (لفظي تماما لذلك لا يجب أن نسأل: "كيف تكتب أن")، ولكن أنا لا أعرف قواعد اللغة جيدا بما فيه الكفاية.

وهذا هو completeley القصصية، لذلك أنا لا أجزم بمدى دقة هذا. أردت فقط أن حصة ما أعرفه عن هذا. : -)

وأنا أتفق مع الإجماع العام هنا."انسان قارئ" هدف عام تعد لغات البرمجة في الغالب فكرة سيئة، لكن اللغات المحددة للمجال التي يمكن قراءتها بواسطة الإنسان تستحق العناء للغاية.

لدى REBOL نظام رائع لإنشاء خطوط DSL.

GradStudent

ليس لها إلا عبارة واحدة: "أنت - اكتب لي برنامجًا للقيام بـ x"
إنه صالح لجميع قيم X وله ميزة أن x لا يلزم تعريفه ويمكن تغييره بعد كتابة البرنامج.

تتوفر لهجة تجارية تسمى المتدرب:تكلفة التطوير أقل ولكنها غير مضمونة للعمل

كوبول كان نوع من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top