Существует ли человекочитаемый язык программирования? [закрытый]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
52
задан 5 revs, 5 users 89% 1 May 2012 в 07:06
поделиться

49 ответов

КОБОЛ много похож на это.

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.
104
ответ дан 4 revs, 3 users 88% 7 November 2019 в 08:56
поделиться

Кобол отчасти был похож на это.

1
ответ дан mike511 7 November 2019 в 08:56
поделиться

Я соглашаюсь с общим согласием здесь. "Человекочитаемый" общая цель языки программирования являются главным образом плохой идеей, но человекочитаемые Предметно-ориентированные языки очень стоят.

REBOL имеет большую систему для создания DSLs.

2
ответ дан Gregory Higley 7 November 2019 в 08:56
поделиться

Я могу считать C. Это означает, что это человекочитаемо (потому что я - человек). Это просто слишком кратко для среднего человека. Общее понятие языков программирования должно максимизировать информацию о том, как компьютер должен работать в данной строке.

Поэтому Ruby так популярен; это максимизирует функциональность в минимальном тексте. Английский язык (или любой другой другой естественный язык) является довольно неточным, low-information/character язык.

В сумме, это: (i) сделано прежде и (ii) известная более слабая идея.

7
ответ дан Paul Nathan 7 November 2019 в 08:56
поделиться

AppleScript достаточно близок к этому, хотя это - очевидно, зависимый платформы.

Вот сценарий для вводного iTunes и игры плей-листа

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

Источник: Примеры AppleScript

42
ответ дан 3 revs 7 November 2019 в 08:56
поделиться

программирование продвижения Проектов на "естественном языке" внутренне обречены перестать работать.

- Edsger W.Dijkstra, , Как мы говорим истины, которые могли бы причинить боль?

32
ответ дан Mauricio Scheffer 7 November 2019 в 08:56
поделиться

Это было "следующей большой вещью" вокруг о начале 1980-х, и я провел большую часть своих первых двух лет как кодер, работающий в "ЕСТЕСТВЕННОМ", который был, предположительно, лучшим из новой обрезки 4GLs (языки четвертого поколения), которые были разработаны для создания доступа к данным (в этом случае к базе данных ADABAS) человекочитаемым.

, Конечно, это не сделало абсолютно ничего из типа. Все, с чем мы закончили, было подробным плохо структурированным кодом. Оба из этих продуктов все еще вокруг, но Вы никогда не слышали о них, какой вид доказывает, каким тупиком это было.

На самом деле в тот период, казалось, было общее требование переместиться вне 'программирования' во вдохновленные небеса AI своего рода 2001. Oracle была действительно увлечена генерацией кода, и я помню с некоторым интересом продукт, названный 'последний', который продавался менеджерам как продукт, который автоматически генерирует любую программу, которую Вы хотели, и сократите весь свой программирующий штат. Кажется, не соответствовал ожиданиям;-)

Это стоит помнить к тому SQL, был первоначально продан в некоторых четвертях как способ позволить управлению непосредственно запрашивать их данные. Я был даже отправлен на курсе для изучения основного SQL (в крупной национальной транспортной организации, которая работала на направляющих - стальное разнообразие), где младшие типы управления были включены, потому что у них были планы поместить основные инструментальные средства формирования запросов в их руки. Какое бедствие, которое было.

, Возможно, это могло бы отличаться через 50 лет, но на текущем этапе кодирования игры требует определенной ясности мысли и реализации, которая лучше всего установлена через специализированный синтаксис, разработанный для тех концов, не любого приближения на естественный язык, который неясен и неоднозначен. Самое близкое приближение является возможно физикой, где сущность предмета находится в используемой математике (думайте язык программирования для физики), не подробный wordage.

ДОБАВИЛ

, я забывал, кроме КОБОЛа там было также МН/1, когда-то приписанный разрешение НАСА поместить человека на луну, это было столь же подробным как КОБОЛ и попыталось еще тяжелее быть 'читаемым менеджером'. Который является, почему никто действительно не услышал о нем теперь ни одного:-)

31
ответ дан 4 revs, 3 users 91% 7 November 2019 в 08:56
поделиться

Шеф-повар ! Кто-либо может считать право рецептов? Созерцайте привет мир !

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.

Жаль, если это не серьезный ответ, но это - потрясающий путь.:-)

18
ответ дан Mauricio Scheffer 7 November 2019 в 08:56
поделиться

Все языки 'человекочитаемы'.:), Как еще кто-то был бы в состоянии создать его? Однако языки, которые поддерживают DSLs, могут быть невероятно интуитивными такой как Шиканье .

17
ответ дан 2 revs, 2 users 67% 7 November 2019 в 08:56
поделиться

Чтение языка программирования как (подробный) нормальный язык, был бы похож на людей требования для разговора все время в юридическом жаргоне. Вся дополнительная формулировка просто мешает.

идеальный язык программирования должен иметь синтаксис, который максимально прозрачен, и позвольте понятиям позади программы выделиться. Очевидно, существует компромисс между наличием быстрой кривой обучения, и наличие минимального но неясного синтаксиса (думайте Perl, или даже K).

15
ответ дан Rob Walker 7 November 2019 в 08:56
поделиться

Путем создания ряда правил возможно сделать логическое программирование в Пролог как это. Можно создать грамматику (или загрузить одну) для конкретного домена, создайте базу знаний и затем запросите ее. После определения Вашей грамматики Вы могли сделать что-то как:

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
13
ответ дан b3. 7 November 2019 в 08:56
поделиться

Я вижу , язык программирования Shakespeare должен все же быть упомянут.

Эти программы кодируются для сходства с играми shakespear, individial символами в игре, являющейся переменными, которые могут содержать числа, и различные фразы в игре управляют символами и числом, которое они содержат. Например, "Откровенно выскажитесь", приказывает, чтобы символ произвел его значение.

13
ответ дан 2 revs, 2 users 91% 7 November 2019 в 08:56
поделиться

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
9
ответ дан 2 revs, 2 users 97% 7 November 2019 в 08:56
поделиться

Быть более человекочитаемым, чем большинство было одним из ранних коммерческих аргументов Ada. Я нахожу его глупым аргументом в эти дни как любая sufficently сложная задача в любой , язык собирается потребовать, чтобы компетентный practicioner понял. Однако это действительно бьет bejeezus из языков синтаксиса C. Его доминирующие стили кодирования могут улучшить этот эффект также. Например, сравнивая циклы в, если оператор: Ada:

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 выглядел бы еще хуже, если бы я использовал Венгерскую запись как Microsoft, но я пытаюсь быть хорошим.:-)

3
ответ дан T.E.D. 7 November 2019 в 08:56
поделиться

Сообщают 7

, Сообщают 7, возможно, язык, который я чувствую, наиболее соответственно разработан способом естественного языка. Это довольно специализировано для записи игр приключения.

Это основано на основанной на правилах семантике, где Вы пишете много правил, описывающих отношения между объектами и их местоположением. Например, разделом ниже является Сообщение 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.

Пример, приведенный из Википедии

98
ответ дан 2 revs, 2 users 71% 7 November 2019 в 08:56
поделиться

Это - на самом деле горячая тема.

Для начинающих - Что Человекочитаемо?

китайский читатель А не может читать на русском языке и наоборот. Это Вы сужаете свой домен, например, китайским фармацевтам, пишущим предписание, Вы могли разработать язык на основе этого. И это было бы человекочитаемо .

, такие как язык подпал бы под зонтик Предметно-ориентированные языки .

7
ответ дан Johnno Nolan 7 November 2019 в 08:56
поделиться

Да. Это звонило КОБОЛ , и люди обычно терпеть не могут его.

6
ответ дан Kirk Strauser 7 November 2019 в 08:56
поделиться

Сообщают 7 , является самым успешным такая система, которую я видел. Это имеет два преимущества перед более сырыми системами, перечисленными в других ответах здесь: это для домена, особенно подходящего для естественного языка (интерактивная беллетристика), и это делает более необычный анализ входного кода на основе большего количества сведений компьютерной лингвистики, не только стандартную грамматику языка программирования, которая, оказывается, использует английские слова вместо фигурных скобок, и т.д.

6
ответ дан 2 revs, 2 users 86% 7 November 2019 в 08:56
поделиться

Perl, требуют некоторые люди.

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";
5
ответ дан Robert P 7 November 2019 в 08:56
поделиться

Сделайте Google ищет "программирование на естественном языке", и Вы найдете большую информацию (включая то, почему это - плохая идея).

5
ответ дан BoltBait 7 November 2019 в 08:56
поделиться

Ясность Выражения важна.

, Но Ясность Мысли далеко, намного более важен.

5
ответ дан SquareCog 7 November 2019 в 08:56
поделиться

HyperTalk и его потомок AppleScript были разработаны, чтобы быть подобным английскому языку.

5
ответ дан 2 revs 7 November 2019 в 08:56
поделиться

VB так близок, как я могу думать о том:

, Если MyLife. Сосет Тогда MyLife. Конец Еще MyLife. Продолжите

4
ответ дан Kon 7 November 2019 в 08:56
поделиться

Несомненно, Erlang.

-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).

я - человек, это - язык программирования, и я могу считать его. Я не знаю то, что любой из него средства, но я вижу много английских слов там, я думаю.

(Язык твердо в щеке.)

4
ответ дан Robert S. 7 November 2019 в 08:56
поделиться

DSLs может очень естественно выглядеть. См. этот пример созданный с 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
4
ответ дан Mauricio Scheffer 7 November 2019 в 08:56
поделиться

КОБОЛ был предназначен, чтобы быть считанным менеджерами и имеет "шумовые слова" для создания его более читаемым.

забавная вещь, она читает немного как подробный DSL.

3
ответ дан Michael Easter 7 November 2019 в 08:56
поделиться

SQL

SELECT name, address FROM customers WHERE region = 'Europe'
7
ответ дан Martin 7 November 2019 в 08:56
поделиться

Как насчет LOLCODE?

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

сама Простота!

120
ответ дан 2 revs 7 November 2019 в 08:56
поделиться

GradStudent

В нем есть только одно утверждение: «вы - напишите мне программу для выполнения x»
Это справедливо для всех значений X и имеет то преимущество, что x не требует определения и может быть изменен после написания программы.

Доступен коммерческий диалект под названием «стажер»: стоимость разработки ниже, но его работа не гарантируется

2
ответ дан 7 November 2019 в 08:56
поделиться

По моему скромному мнению, человеческая удобочитаемость довольно субъективна. Однако, если бы Вы хотите узнать больше, я предложил бы исследовать следующие темы:

  • Python - какое использование предпочитает пробел 'специальным символам' (такой как {&} для синтаксиса).
  • Smalltalk - который позволяет аргументам быть распространенными через имя метода.
  • Ruby
  • Быстрые API / Предметно-ориентированные языки
1
ответ дан johnstok 7 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: