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

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

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

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

Upliner

Цитата: kemerover от ноября 12, 2021, 21:21Нету наследования, дженериков, исключений, нулевых типов; даже тернарного оператора нету. Это первое, что в голову пришло.
Ну, анонимки довольно неплохо заменяют наследование, вот в js до 15 года наследование было совсем уж костыльное, квази-исключения в виде panic-recover тоже есть, нулевой тип никто не мешает сделать из struct{}. Вот генериков и нормальных коллекций не хватает, это да.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

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, поэтому такие фокусы стали не нужны.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

Karakurt

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

злой

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

Не-не-не. Попробуйте представить себе ОС, написанные на Паскале или Фортране. Страшный сон.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

maratique

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

Upliner

Да, чего такого страшного в Паскале? Begin-End вместо фигурных скобок?
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

злой

Паскаль - для поделок школьников и студентов.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

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, который всё-таки иногда допускают использовать для обработки ошибок в отсуствие исключений.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

злой

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

Арифметика указателей, управление памятью - в Сях есть.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Upliner

Цитата: злой от ноября 12, 2021, 22:30Арифметика указателей, управление памятью - в Сях есть.
В Паскале тоже.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

злой

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

Я своими глазами видел goto во вполне серьёзных программах. Стереотип про goto - это примерно такая же дичайшей пережиток, как тот, чтт функция должна умещаться в 25 строк. Понятно, что не нужно пользоваться goto, потому что лень разбить на функции и расчесать спагетти-код, но там, где goto уместно, пусть все критики идут лесом.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Upliner

Цитата: Upliner от ноября 12, 2021, 22:34
Цитата: злой от ноября 12, 2021, 22:30Арифметика указателей, управление памятью - в Сях есть.
В Паскале тоже.
Хотя да, арифметика не совсем кошерная -- в некоторых случаях приходилось кастовать указатель в Longint и там уже выполнять все манипуляции.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

злой

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

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

Всё равно, почему-то программы серьёзнее электронного склада на Паскале/Delphi писали крайне редко, даже в эпоху его лютой популярности.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Upliner

Цитата: злой от ноября 12, 2021, 22:47В классическом Паскале аналогов malloc/free нету, там вроде только куча. В Дельфях вроде всё есть, действительно. Как-то это мимо меня прошло.
Я начинал с Borland Pascal 6, там уже были GetMem и FreeMem.
В любом случае, к языку как таковому это отношения не имеет, это фича стандартной библиотеки.
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

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 в среде программистов сроден религиозному запрету на поедание свинины у иудеев и мусульман.

Короче, меньше догматизма, больше практики, и будет понятно, какие правила действительно помогают писать хороший код, а какие можно без сожалений отбросить.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

_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.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

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

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

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

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