Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет chistyakov ([info]chistyakov)
@ 2004-12-08 02:32:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Непросвещённым любителям языка "Си". Для чтения (тем, кто умеет).
Читатель может прикинуть, сколько весила бы машина, если бы ее ПО создавалось на основе таких популярных языков как Java или C++ — и когда был бы закончен проект. В качестве масштабного множителя можно предложить отношение объемов описаний языков — 16 стр. для Оберона, 200 для Java и больше 1000 для C++. ;-))

Почти полувековой личный опыт Н.Вирта в разработке пионерского программного обеспечения — компиляторы, операционные системы, прикладные программы (офисное ПО для факультета информатики ETH для рабочих станций Lilith и Ceres с конца 70-х по 1990 г.), управляющие системы реального времени, а также преподавание — такой уникальный опыт придает колоссальный вес его критике широко распространенных языков и практики программирования.



{+}


(Читать комментарии) - (Добавить комментарий)

Re: Дело привычки.
[info]ex_chistyak@lj
2004-12-08 07:53 (ссылка)
>...Чем меньше код программы, тем меньше возможность там сделать ошибку

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

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Дело привычки.
[info]potan@lj
2004-12-08 22:23 (ссылка)
В традиционных языках большой объем кода возникает не из-за избыточности (замени где-нибудь + на -, ни кто и не заметит), а из-за излишней детализации. Так при программировании циклов по массиву очень легко ошибиться на границе (не обработать последний элемент или выйти на пределы выдегенного массива). А поддержка работы с массивом целиком в языке не просто сокращает объем кода, но и уменьшает возможность сделат ошибку. Но не все сводится к обработке массивов. То есть язык должен содержать средства разработки обобщенных механизмов. C++, в отличии от языков Вирта, такие средства содержит, хотя и реализованны они до предела криво.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Дело привычки.
[info]ex_chistyak@lj
2004-12-09 03:40 (ссылка)
>...не обработать последний элемент или выйти на пределы выделенного массива

Для этого надо быть ИДИОТОМ.
Паскаль на них не рассчитан. Это непредсказуемо.

{+}

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Дело привычки.
[info]cdrriko@lj
2005-01-06 09:46 (ссылка)
Мне кажется, это одна из частых случайных ошибок, аналогом которой может быть опечатка в тексте. Чаще всего выявляется при первых же тестах программы, а вот если не выявляется -- то ловить её бывает довольно тяжело. К сожалению, компилятор паскаля защищает от неё ровно в той же степени, что и компилятор C/C++, а именно -- никак. К ещё большему сожалению процессор не может "поморщиться и пропустить" такую опечатку, как делает читающий человек.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Дело привычки.
[info]ex_chistyak@lj
2005-01-06 12:10 (ссылка)
Оберон защищает. Прогресс идёт.

(Ответить) (Уровень выше)


(Анонимно)
2004-12-14 11:05 (ссылка)
Мысль насчёт излишней детализации мне тоже представляется верной. И Си++ я отличаю именно за перспективу что-то сделать в этом направлении, а именно за шаблоны. Других обнадёживающих путей вроде не видно.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Есть простой универсальный механизм
[info]ex_chistyak@lj
2004-12-14 11:29 (ссылка)
Процедуры. Или уже неловко пользоваться такой элементарщиной?

:)

(Ответить) (Уровень выше)


[info]potan@lj
2004-12-14 21:28 (ссылка)
Языки APL, K, Haskell, Ocaml, Cyclone - чем не другие пути?

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2004-12-20 05:14 (ссылка)
Прочитал введение в язык J от [info]dr_klm@lj.

Что я могу сказать. Лаконичность впечатляет, конечно.

Но по-моему, над этим подходом ещё работать и работать напильником :) А так заманчиво, не спорю, - программу на одном экране иметь. Напоминает китайское иероглифическое письмо.

Настораживает то, что алфавитное посильнее оказалось. Ну да это в "естественных" языках, где смысл текстов похитрее устроен. Может с языками программирования выйдет иначе. Надо копать.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan@lj
2004-12-20 05:24 (ссылка)
На счет того, что "алфавитное посильнее" можно поспорить. Примерно четверть населения Земли пользуется иероглифами одного типа. А алфавилов много, и больших преимуществ они не дают (можно было бы надеяться на простые алгоритмя чтения вслух, но в естественных языках даже этого нет. Хочется вспомнить беларусский, но там ударения надо запоминать).

В языках, произошедших от APL, на мой взгляд не хватает статической типизации. Опыт программирования на Haskell говорит что вывод типов подвыражений - хороший способ разобраться в чужей программе. Для столь лаконичного языка это было бы очень полезно. Да и количество ошибок позволило бы сократить.

(Ответить) (Уровень выше)


(Читать комментарии) -