Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Языки программирования

Автор Devorator linguarum, октября 31, 2018, 18:59

0 Пользователи и 1 гость просматривают эту тему.

Upliner

Цитата: kemerover от ноября 12, 2021, 21:21Нету наследования, дженериков, исключений, нулевых типов; даже тернарного оператора нету. Это первое, что в голову пришло.
Ну, анонимки довольно неплохо заменяют наследование, вот в js до 15 года наследование было совсем уж костыльное, квази-исключения в виде panic-recover тоже есть, нулевой тип никто не мешает сделать из struct{}. Вот генериков и нормальных коллекций не хватает, это да.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

Karakurt

Цитата: Upliner от ноября 12, 2021, 21:53
Ну, анонимки довольно неплохо заменяют наследование,
А не встраивание? Сет из мапы делается.

Upliner

Цитата: Karakurt от ноября 12, 2021, 21:58
Цитата: Upliner от ноября 12, 2021, 21:53
Ну, анонимки довольно неплохо заменяют наследование,
А не встраивание? Сет из мапы делается.
Вроде как анонимные поля в go -- это не встраивание.
Сет из мапы -- это да, типа map[string]struct{}. Кстати, во втором шарпе нельзя было сделать Dictionary<string,void>, тоже приходилось для этого объявлять пустой struct MyVoid {}. В третьем шарпе появился Set, поэтому такие фокусы стали не нужны.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

Karakurt

Это все мелочи, ведь фишка го в конкурентности.

злой

Цитата: maratique от ноября 12, 2021, 20:16
2)Механизм популяризации, когда популярность набирает не самый изысканный и идейный, а самый блатной. Например, наверняка, богатство фирмы, где работал Риччи, стало причиной распространения Unix'а и Си.

Не-не-не. Попробуйте представить себе ОС, написанные на Паскале или Фортране. Страшный сон.
Когда человек ищет правду, он останавливается на том варианте правды, который его устраивает

maratique

Так Си, Фортран и Паскаль однотипны. Просто в Си меньше писанины, чем в Паскале. А Фортран ничем не хуже Си. Даже лучше.
Memento mori
普京回罗

Upliner

Да, чего такого страшного в Паскале? Begin-End вместо фигурных скобок?
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

злой

Паскаль - для поделок школьников и студентов.
Когда человек ищет правду, он останавливается на том варианте правды, который его устраивает

maratique

Ну правда есть одна крутая фишка в Си — оператор запятая. Благодаря ему можно не писать фигурные скобки:
if(a)
{
   b=c;
   d=e;
}

Равносильно
if(a)b=c,d=e;
Я б с удовольствием писал на Фортране 77, если бы его компиляторы были так же доступны, как gcc.
Memento mori
普京回罗

Upliner

Цитата: злой от ноября 12, 2021, 22:26
Паскаль - для поделок школьников и студентов.
Но чисто с функциональной точки зрения какие у него недостатки по сравнению с сями?
Цитата: maratique от ноября 12, 2021, 22:28Ну правда есть одна крутая фишка в Си — оператор запятая.
Сейчас никто так не пишет и считается дурным тоном, хуже goto, который всё-таки иногда допускают использовать для обработки ошибок в отсуствие исключений.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

злой

Цитата: Upliner от ноября 12, 2021, 22:28
Цитата: злой от ноября 12, 2021, 22:26
Паскаль - для поделок школьников и студентов.
Но чисто с функциональной точки зрения какие у него недостатки по сравнению с сями?

Арифметика указателей, управление памятью - в Сях есть.
Когда человек ищет правду, он останавливается на том варианте правды, который его устраивает

Upliner

Цитата: злой от ноября 12, 2021, 22:30Арифметика указателей, управление памятью - в Сях есть.
В Паскале тоже.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

злой

Цитата: Upliner от ноября 12, 2021, 22:28
Сейчас никто так не пишет и считается дурным тоном, хуже goto, который всё-таки иногда допускают использовать для обработки ошибок в отсуствие исключений.

Я своими глазами видел goto во вполне серьёзных программах. Стереотип про goto - это примерно такая же дичайшей пережиток, как тот, чтт функция должна умещаться в 25 строк. Понятно, что не нужно пользоваться goto, потому что лень разбить на функции и расчесать спагетти-код, но там, где goto уместно, пусть все критики идут лесом.
Когда человек ищет правду, он останавливается на том варианте правды, который его устраивает

Upliner

Цитата: Upliner от ноября 12, 2021, 22:34
Цитата: злой от ноября 12, 2021, 22:30Арифметика указателей, управление памятью - в Сях есть.
В Паскале тоже.
Хотя да, арифметика не совсем кошерная -- в некоторых случаях приходилось кастовать указатель в Longint и там уже выполнять все манипуляции.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

злой

Цитата: Upliner от ноября 12, 2021, 22:34
Цитата: злой от ноября 12, 2021, 22:30Арифметика указателей, управление памятью - в Сях есть.
В Паскале тоже.

В классическом Паскале аналогов malloc/free нету, там вроде только куча. В Дельфях вроде всё есть, действительно. Как-то это мимо меня прошло.

Всё равно, почему-то программы серьёзнее электронного склада на Паскале/Delphi писали крайне редко, даже в эпоху его лютой популярности.
Когда человек ищет правду, он останавливается на том варианте правды, который его устраивает

Upliner

Цитата: злой от ноября 12, 2021, 22:47В классическом Паскале аналогов malloc/free нету, там вроде только куча. В Дельфях вроде всё есть, действительно. Как-то это мимо меня прошло.
Я начинал с Borland Pascal 6, там уже были GetMem и FreeMem.
В любом случае, к языку как таковому это отношения не имеет, это фича стандартной библиотеки.
А Мозилла сильно тормозила, а ишак глюкавил через раз
И тогда явился к нам Konqueror, победил и спас на веки нас!

Michael F

Цитата: злой от ноября 12, 2021, 22:35
Я своими глазами видел goto во вполне серьёзных программах. Стереотип про goto - это примерно такая же дичайшей пережиток, как тот, чтт функция должна умещаться в 25 строк. Понятно, что не нужно пользоваться goto, потому что лень разбить на функции и расчесать спагетти-код, но там, где goto уместно, пусть все критики идут лесом.

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

Что же до ограничения в 25 строк – не вижу ничего плохого в этом. Если программист не может функцию уместить в такое число строк – с огромной вероятностью его мысль неправильна, он не вынес какие-то структурные части, нарушает DRY, смешивает уровни абстракции и так далее. Если же он и не делает всего этого, по счастливой случайности – другой программист сделает это за него, не разобравшись в длинном непонятном коде.

злой

Цитата: Michael F от ноября 12, 2021, 23:23
Цитата: злой от ноября 12, 2021, 22:35
Я своими глазами видел goto во вполне серьёзных программах. Стереотип про goto - это примерно такая же дичайшей пережиток, как тот, чтт функция должна умещаться в 25 строк. Понятно, что не нужно пользоваться goto, потому что лень разбить на функции и расчесать спагетти-код, но там, где goto уместно, пусть все критики идут лесом.

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

Что же до ограничения в 25 строк – не вижу ничего плохого в этом. Если программист не может функцию уместить в такое число строк – с огромной вероятностью его мысль неправильна, он не вынес какие-то структурные части, нарушает DRY, смешивает уровни абстракции и так далее. Если же он и не делает всего этого, по счастливой случайности – другой программист сделает это за него, не разобравшись в длинном непонятном коде.

Не хочу никого задеть лично, выскажу исключительно свою частную точку зрения.

Я эту мантру про 25 строк лет 15 назад впервые услышал (про goto вообще в школе). Это что-то сродни религиозным догмам. Мне интересно, люди которые тиражируют подобные тезисы - сколько строк практически работающего в production кода они написали? Про 25 строк - это банальное ограничение древних терминалов, когда на экране помещалось ровно 25 строк, и функцию нужно было видеть целиком. Сейчас уже давно нет тех деревянных терминалов. Когда мне пришлось заниматься практическим программированием, у меня в голове какое-то время эта мантра про 25 строк гвоздём сидела в голове, и я любой ценой пытался функции в 30-35 строк ужать до 25, потом понял, насколько это глупое занятие. Как предложение выражает законченную мысль, так функция должна выражать законченное действие. Если для законченного действия нужно 40-45 строк, не надо заниматься ерундой и выдумывать, как там её располовинить, потому что какой-то там дядя, сто лет назад, когда у него на экране помещалось 25 строк, что-то написал в книжке по этому поводу.

Насчёт goto - про привязку к парадигме и прочее. Основной критерий хорошей программы - её работоспособность. Дополнительные - читаемость, возможность переиспользования кода, лёгкость в отладке и прочее, но уж точно не соответствие парадигмам. Можно всю жизнь разводить философию о парадигмах, а реального кода написать два поделия и "Hello, World" на десяти языках, конечно же, в строгом соответствии с парадигмами. Запрет goto в среде программистов сроден религиозному запрету на поедание свинины у иудеев и мусульман.

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

_Swetlana

Про 25 строк кода впервые слышу.
Три немаленьких поделия в дельфях написала. 2 в качестве хоздоговорных работ, третье в 2020 годом в качестве дипломной работы в магистратуре.
По-моему, у меня не более 25 строк только в сортировке "пузырёк"  ;D
🐇


kemerover

Цитата: Upliner от ноября 12, 2021, 22:28
Цитата: злой от ноября 12, 2021, 22:26
Паскаль - для поделок школьников и студентов.
Но чисто с функциональной точки зрения какие у него недостатки по сравнению с сями?
http://www.lysator.liu.se/c/bwk-on-pascal.html

Сейчас ситуация, конечно, иная, но это про это, почему Паскаль так и не сыскал успеха в реальном программировании, ну а потом поезд ушёл.

yurifromspb

Кстати, кто-нибудь тут разделяет взгляды Н. Вирта? Знаком с Компонентным Паскалем и т.д.?
Не для спора, просто интересно.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

Свобода у каждого своя, как и очевидность, посмотри, не тьма ли твой свет.

Bāb-lišānī lapit-ma, lū awīlāta! // from "Lamentations of Urišapibim".

RawonaM

Когда прочитал насчет устаревшести 25 строк кода в функции, то поперхнулся. Ну то есть, конечно устарело, ведь сегодня функция должна содержать в идеале одну строку, а две уже много. Но чтоб больше 25?! Думаю, не прошли бы ваши коммиты ревью через меня. ;D

Karakurt

Кстати, лучше переменные кириллицей писать, а то иногда не понятно где что.

Bhudh

Я так писал на JS, но, к сожалению, кириллических аналогов ключевым словам в нём нет, макросов тоже, а смешение некузяво выглядит :(.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:

√49:
ALT+S — отправить
ALT+P — предварительный просмотр