Pascal
Moderator: Shaos
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
На самом деле скорость работы скорее не от языка зависит, а от оптимизирующих свойств компилятора (например некоторые люди поработавшие с компилятором Intel Fortran уверены, что самые быстрые программы нужно писать только на фортране)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1078
- Joined: 03 Feb 2003 13:53
Не скажи скорость зависит в том числе и от парадигм языка. Некие языки(модула-2 например) всегда загружают только динамические библиотеки и линкует их вв процессе выполнения. А пхп, должен например ещё и запустит интерпритатор.Shaos wrote:На самом деле скорость работы скорее не от языка зависит, а от оптимизирующих свойств компилятора (например некоторые люди поработавшие с компилятором Intel Fortran уверены, что самые быстрые программы нужно писать только на фортране)

Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Senior
- Posts: 185
- Joined: 07 Aug 2006 10:18
Мне нечего на это сказать. Разве что могу задать уточняющий вопрос: о какой из проблем ты не знал? О проблемах с ";" или о невероятных приоритетах?HardWareMan wrote:Я об этой проблеме даже и не знал, пока ты мне не сказал, лол. :3bar wrote:Больше всего меня бесили сложные правила расстановки точки с запятой.
То она должна стоять в конце строки, то не должна... Запомнить эти правила и расставлять правильно несложно, но когда дело доходит до копирования кода кусками из одного места в другое, паскаль начинает фонтанировать идиотизмом, вонять что else ни к месту, или что он несмотря на очки не может найти точки с запятой там, где она должна быть.
Ещё я постоянно спотыкался о невероятные приоритеты операций: как вообще Вирту пришло в голову сделать приоритет логических операций выше приоритета операций сравнения?
Кстати эта ; перед else -- это не единственный такого рода момент. Скажем перечисляя элементы типа enum {one, two, three, four, }, я могу оставить запятую после four -- это сделано с той же целью: чтобы копирование кода из конца перечисления в середину оставляло бы код правильным. То же при перечислении элементов инициализатора массива или структуры.
Но, кстати, то, что паскалист не замечал этих проблем -- это очень предсказуемо. Каждый оценивает программирование с вышки "своего" языка. И чем меньше возможностей в языке, тем большее число возможностей такой программист считает опциональными, ненужными, а может даже и вредными.
Есть такая парадигма программирования, называется она: структурное программирование. Так вот именно ради этого был изобретён C'шный for. Организация цикла -- сама по себе, код относящийся к выполнению действий на каждой итерации -- сам по себе.HardWareMan wrote:Объясни мне практический смысл этого джицу.bar wrote:Ну и отсутствие нормального for'а. Распихивать по while'ам все циклы утомляет. Надписи типа:в C очень удобны тем, что собирают организацию цикла в одно место. В паскале же постоянно приходится перемешивать организацию цикла и собственно итерацию цикла. Хуже чем в ассемблере. Постоянно приходится писать что-то типаCode: Select all
for(initLoop(); testLoop(); moveLoop()) {...}
Code: Select all
while true; do begin ... end;
Подход "макси" к этой проблеме -- это lisp'овский макрос loop, используя который я пишу что-то типа:
Code: Select all
(loop
initially действия-выполняемые-до-старта-цикла
for i from 0 to N ;;переменная которая на каждой итерации будет иметь разные значения
for item in mylist ;;ещё одна такая переменная, будет пробегать элементы списка
for j = 1 then (* j 2) ;; ещё одна -- будет перебирать степени двойки
with a = 7 ;;локальная переменная
do безусловно-выполняемые-на-каждой-итерации-действия
collect эти-значения-с-каждой-итерации-будут-собраны-в-список
finally действия-выполняемые-после-завершения-цикла)
C'шный подход не столь универсален, но зато не лишён изящности:
Code: Select all
for (i = findFirst(); i != NULL; i = findNext()) {
делаем полезные вещи с i
}
И мало того, что такие for'ы читать понятнее, чем уродские while'ы, в которых сам чёрт ногу сломит в попытке выяснить, что этот while делает. Так ведь такие for'ы гораздо удачнее для макрописательства. Я, скажем, с трудом могу представить себе, как в паскале можно было бы написать макрос list_for_each, даже если бы в паскале был бы макроязык. (list_for_each -- достаточно активно используемый макрос в ядре linux, и без этого макроса код ядра стал бы существенно менее читаемым.)
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
в питоне например отбивками слева надо блоки выделять - эдакое структурное программирование в пределеLavr wrote:Вобще, на мой взгляд, расстановка операторных скобок, будь то begin-end или {} , а также различных ограничителей строк - это перекладывание части функций синтаксического анализа с компилятора на плечи программиста.

а в лиспе из синтаксиса есть только круглые скобки, много скобок...
P.S. лисповиков нам ещё не хватает - холиварщики ещё те - за любимый лисп любого сишника порвут

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Я просто высказал своё мнение, а кого здесь не хватает, тебе, видимо, виднее...Shaos wrote:лисповиков нам ещё не хватает - холиварщики ещё те - за любимый лисп любого сишника порвут
Я не сторонник холиваров во всех их проявлениях.
P.S. Я там вот выше вопрос задал и по отсутствию ответа понимаю так, что все
горячие дискуссии и холивары с переходом на личности ещё не изменили конструктивно
ни чью точку зрения на языки программирования.
-
- Senior
- Posts: 180
- Joined: 28 Feb 2006 21:34
Саша, а я между прочим фанат Лиспа. ))) В свое время написал аж две реализации. ))))Shaos wrote:в питоне например отбивками слева надо блоки выделять - эдакое структурное программирование в пределеLavr wrote:Вобще, на мой взгляд, расстановка операторных скобок, будь то begin-end или {} , а также различных ограничителей строк - это перекладывание части функций синтаксического анализа с компилятора на плечи программиста.![]()
а в лиспе из синтаксиса есть только круглые скобки, много скобок...
P.S. лисповиков нам ещё не хватает - холиварщики ещё те - за любимый лисп любого сишника порвут
-
- Admin
- Posts: 24088
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Senior
- Posts: 180
- Joined: 28 Feb 2006 21:34