Использует для динамических языков - PullRequest
8 голосов
/ 30 января 2009

Мой основной язык сейчас - D, и я нахожусь в процессе изучения Python, потому что это требуется для курса, который я прохожу. Хотя я понимаю, почему динамические языки были бы глотком свежего воздуха для людей, программирующих на статических языках без вывода типов или шаблонов (шаблоны IMHO в значительной степени являются утилитой во время компиляции), мне любопытно, какие преимущества имеют динамические языки даже когда у вас есть те.

Суть в том, что если я собираюсь изучать Python, я хочу изучить его таким образом, который действительно меняет мои представления о программировании, а не просто написание D на Python. Я не использовал динамические языки, так как я был довольно начинающим программистом и не мог оценить гибкость, которую они якобы предлагают, и хочу научиться в полной мере использовать их сейчас. Что можно сделать легко / элегантно в динамически типизированном, интерпретируемом языке, который неудобен или невозможен в статическом языке, даже с шаблонами, полиморфизмом, выводом статического типа и, возможно, отражением во время выполнения?

Ответы [ 13 ]

0 голосов
/ 30 января 2009

Я нахожу динамические языки, такие как Perl и в меньшей степени Python, позволяющие мне писать быстрые и грязные сценарии для вещей, которые мне нужно сделать. Цикл выполнения в динамических языках намного короче, и часто требуется меньше кода, чем в языке со статической типизацией, что повышает мою производительность. К сожалению, это происходит за счет удобства сопровождения, но это ошибка того, как я пишу программы на динамических языках, а не на самих языках.

0 голосов
/ 30 января 2009

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

0 голосов
/ 30 января 2009

Я собирался сказать замыкания, но нашел эту тему ... (не то чтобы я понял, как это будет работать на "статическом" языке)

Связанными понятиями являются функции как первоклассные объекты и процедуры высшего порядка . (например, функция, которая принимает функцию в качестве входных данных и / или возвращает функцию в качестве выходных данных)

edit: (для придурков здесь) Я повторю комментарий, который я сделал на пост @David Locke. Динамически интерпретируемые языки позволяют использовать существующую программу / проект программного обеспечения в сочетании с небольшой функцией или классом, созданным в одно мгновение, для интерактивного изучения чего-либо. Вероятно, лучший пример - построение графиков функций. Если бы я написал объект для отображения функций с функцией graph(f,xmin,xmax), я мог бы использовать его для исследования таких функций, как x 2 или sin (x) или что-то еще. Я делаю это в MATLAB все время; он интерпретируется и имеет анонимные функции (@(x) x^2), которые можно создать в приглашении интерпретатора для передачи в функции высшего порядка (графические функции, производные операторы, корневые искатели и т. д.).

...