LINUX.ORG.RU

Новый язык программирования для русскоговорящих

 , , ,


3

2

Синтаксис от Хаскеля, семантика от Ракета.

факториал(сч) =
  если (сч == 1)
    1
    сч * факториал (сч - 1)

фибоначчи(сч) =
  если (сч < 3)
       1
       пусть рекурсия (н-1 1; н 2; тек-сч 3)
         если (сч == тек-сч) н $ рекурсия н (н + н-1) $ тек-сч + 1

Будет ещё конструкция надо-быстро с семантикой от Си (и использованием gcc).

Исходники: https://github.com/Kalimehtar/russian-lang

Пакет для Ракета: https://pkgd.racket-lang.org/pkgn/package/russian-lang

Документация: https://docs.racket-lang.org/russian-lang/index.html

★★★★★

Последнее исправление: hobbit (всего исправлений: 4)

Ответ на: комментарий от anonymous

Удивляют меня многие форумчане, ведь многие из них Не бум бум в тех вопросах в которых они постоянно «надувают щеки»

Равносильно

Обсуждению БОЛЬШОЙ ПОЛИТИКИ бабушками сидя на лавочке у подъезда

Владимир

anonymous
()
Ответ на: комментарий от anonymous

ежеденвыми сводками от Медиазоны

ок, после ссылки на НОД вести с тобой дискуссии - дело совсем глупое.

Ну что ж. Ты «окрасил себя в те цвета, в которые окрасил себя» (с). Если Медиазона, созданная Pussy Riot на иностранные деньги, является источником истины, а факт перестаёт быть фактом только потому, что про это написан НОД,то с тобой тоже всё ясно.

А еще плохо при детях материться, но это не повод давать уголовку.

В любимой тобой Германии в Уголовном Кодексе целых три статьи за клевету есть: 186, 187, 187a. И про поддержку терроризма есть в 129a.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

@monk

Рад, что форумчане не продолжают диалог по теме в которой они некомпетентны.
Ладно бы /еще куда не шло/ у оппонентов было какое-то профильное образование близкое к обсуждаемой теме или …
А так

Базар у подъезда сидя на лавочке

Владимир

anonymous
()
Ответ на: комментарий от anonymous

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

Пока кроме предпочтения полных идентификаторов без сокращений и наличия ключевых слов «то/тогда» и «иначе» в «если» ничего по существу не было. По надо-быстро вообще ни одного комментария.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Интересно, что ты думаешь о принятии Русью христианства)

К факту принятия отношусь резко отрицательно. Фактически, был такой же карго-культ по отношению к Византии как сейчас к США. И с аналогичными результатами: Византия получила полный контроль над русской церковью и власть князя была существенно ограничена.

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

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

Практически сразу русское православие адаптировалось под местные условия и стала служить маркером ’русскости". Именно поэтому современные нападки на православие являются попытками уничтожить Россию.

ЗЫ Я неверующий и не люблю попов, но борцы с РПЦ во сто крат хуже.

anonymous
()
Ответ на: комментарий от anonymous

западная европа - это про милосердие

Ты перепутал слова «милосердие» и ’лицемерие". Или ты считаешь милосердием убийства, пытки, геноцид, голодомор и прочие прелести, которым позавидуют даже азиатские деспотии?

anonymous
()
Ответ на: комментарий от anonymous

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

Назови мне хоть одну реально существующую страну в которой соблюдаются все твои хотелки. Единственное условие - население страны должно быть хотя бы один миллион человек. Ну ладно, хотя бы сто тысячь.

Реально существующую!

anonymous
()
Ответ на: комментарий от monk

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

Есть теория развития и гибели государств, сформулированная пару тысяч лет назад. С некоторыми искажениями и упрощениями, она использовалась даже в ленинизме. По ней США относится к торговым республикам. Одновременно в мире может существовать только одна Великая Торговая Республика, этакий финансовый центр мира. Наиболее яркие представители: Карфаген->Венеция->Голландия->США. Срок величия всё время уменьшается и для США составляет примерно один век. Начало отсчета - создания ФРС США.

anonymous
()
Ответ на: комментарий от anonymous

США в пример приводить не надо, там получше, но все далеко от идеала. Давай про Германию, Норвегию, Нидерланды, Францию. Как убили/изнасиловали/подбросили, угрожали убить/изнасиловать/подбросить итд.

Я даже не знаю о чём говорить, если формулировка «самоубийство двумя выстрелами в затылок», официально признается причиной смерти.

Отсутствие в русскоязычном пространстве информация о таких преступлениях в этих странах указывает лишь то, что Россия не спонсирует правозащитников в этих странах. Для сравнения, в 70х в СССР широко освещались преступления английского империализма в Северной Ирландии. Но в то время у руководства СССР были хохлы.

anonymous
()
Ответ на: комментарий от monk

Пока кроме предпочтения полных идентификаторов без сокращений и наличия ключевых слов «то/тогда» и «иначе» в «если» ничего по существу не было.

Sorry /по рукам меня нужно бить за не русское слово/, повторю ранее высказанные суждения /на истинность их не претендую/.

ИМХО /часто выделяю блок лишь из-за того, что пробелы «проглатываются»/:

 - Язык программирования должен быть многоязычным.   
   Более того, желательно, чтобы даже ключевые слова можно было настроить как того желает пользователь /алиасы/.

 - Идентификаторы должны быть а-ля 1С /это не значит, что обязательно на русском языке/;  

 - Синтаксис языка не должен быть "заумным".   
   Ведь что такое программа - набор алгоритмов.  
   Поэтому синтаксис должен обеспечивать возможность записи readable алгоритмов

Это пожелания «навскидку».

Проблема нынешних языков программирования - грамматики, которые пригодны лишь для очень простых языков.

Имеются ли пути разработки языков программирования не использующие грамматики - да.

Диаграммы @metaprog больше похожи на - «программист слышал звон …».

На эту тему разглагольствовать не буду.

PS: Просто удивительно, что уже лет пятьдесят языки программирования «топчатся на одном месте».

Владимир

anonymous
()
Ответ на: комментарий от monk

По надо-быстро вообще ни одного комментария.

И на какой раскладке надо-быстро набирать символы «^ [ ]» ?

«0.0» - это русский разделитель дробной части?

У тебя со всех щелей торчит карго-культное импортозамещение - переклеивание логотипов. den73 хотя бы пытается решать эти проблемы.

И что ты имеешь ввиду под «надо-быстро»? Привел какой-то кусок текста с сильным заморским акцентом, что русскому не понять. Что мы должны критиковать?

anonymous
()
Ответ на: комментарий от anonymous

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

Про католичество согласен: подчиняться Папе или Патриарху невелика разница. Про мусульманство не понял: Волжские Булгары приняли ислам в 922 году и какая экспансия к ним пришла? Только русские христиане.

Практически сразу русское православие адаптировалось под местные условия и стала служить маркером ’русскости".

Адаптировалось - да, но под руководством греков. И независимость от Константинополя появилась только в 15 веке.

Именно поэтому современные нападки на православие являются попытками уничтожить Россию.

Я не нападаю на православие. Я считаю, что ошибкой было принимать главенство Византии в 10 веке. Но также ошибкой является попытка ослабить или уничтожить РПЦ, не имея равносильной организации на замену.

monk ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Не путай меня с СК.

google: СК возбудил уголовное дело о геноциде жителей Сталинграда нацистами в 1942−43 годах

Меня подобный цирк не интересует. Что было 70 лет назад, 100 лет назад, 200, печенеги, половцы. Разговор про «сейчас», актуальное время.

anonymous
()
Ответ на: комментарий от anonymous

Для нормального взаимодействия Руси необходимо было покончить с язычеством.

а России для нормального взаимодействия с чем надо покончить?

anonymous
()
Ответ на: комментарий от monk

Я не нападаю на православие. Я считаю, что ошибкой было принимать главенство Византии в 10 веке. Но также ошибкой является попытка ослабить или уничтожить РПЦ, не имея равносильной организации на замену.

вася, где логика?

anonymous
()
Ответ на: комментарий от anonymous

кого б твое мнение интересовало, хоть по одному вопросу. Ты же шизофреник, натуральный.

anonymous
()
Ответ на: комментарий от anonymous

И на какой раскладке надо-быстро набирать символы «^ [ ]» ?

Писал уже: верхний цифровой ряд легко переопределяется.

«0.0» - это русский разделитель дробной части?

В том числе (ГОСТ 6.20.1—90, ГОСТ 2.004—88). Могу разрешить запятую, если кто-то этим будет пользоваться.

И что ты имеешь ввиду под «надо-быстро»? Привел какой-то кусок текста с сильным заморским акцентом, что русскому не понять. Что мы должны критиковать?

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

Привел какой-то кусок текста с сильным заморским акцентом, что русскому не понять. Что мы должны критиковать?

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

monk ★★★★★
() автор топика
Ответ на: комментарий от anonymous

на самом деле, это на лоре такая мракобесная обстановка. Так-то, молодеж современная, она на херу вертела все это, и не только у нас. Так что эти уроды вымрут, и все будет ок.

anonymous
()
Ответ на: комментарий от anonymous

Что не так? Ошибка 10 века исправилась в 15 веке. На данный момент РПЦ свои функции выполняет не идеальным образом, но если её вдруг не станет, все альтернативные существующие на данный момент организации на этом месте будут ещё хуже.

monk ★★★★★
() автор топика
Ответ на: комментарий от anonymous

опять хохлы виноваты

Я не виноват, что Брежнев писал в паспорте национальность «украинец», Хрущёв был из «донецких», а Горбачёв учился, а следовательно и формировал во многом мировоззрение, в Киеве.

anonymous
()
Ответ на: комментарий от monk

Писал уже: верхний цифровой ряд легко переопределяется.

Вот и займись этим импортозамещением, чтобы это было естественно и удобно для русскоговорящего. И x,y,z заодно импортозамести.

Могу разрешить запятую, если кто-то этим будет пользоваться.

Перевернул приоритеты использования, да еще запретил основное/предпочтительное использование.

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

Причем тут надо-быстро? Ты тут втягиваешь сишную семантику, через рэкетную и записываешь на непонятном языке. А язык си - это вообще некий франкенштейн, который сложен и для человека и для машины. И вообще не понятно как этот сишный кусок взаимодействует с остальной частью программы со сборкой муссора и нетипизированными переменными.

Если не нравится акцент, приведи, как бы ты написал этот кусок текста по-русски без акцента.

Опять это бюрократическая попытка словесно описать любой образ. Я не хочу в этом участвовать. Над нормальными DSL надо основательно думать, а не знаниматься импортозамещением франкенштейнов. У нас своих бабок-яжек хватает.

anonymous
()
Ответ на: комментарий от anonymous

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

Для 10 строчек xmodmap писать программу?

И x,y,z заодно импортозамести.

На что? Предложишь перевод? И, чтобы два раза не вставать, синус тоже предложишь перевести как «складка»?

Перевернул приоритеты использования, да еще запретил основное/предпочтительное использование.

В ГОСТ есть точка. И даже испанцы в своём национальном PSeInt оставили точку, несмотря на то, что в испанском языке разделитель запятая.

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

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

Над нормальными DSL надо основательно думать, а не знаниматься импортозамещением франкенштейнов. У нас своих бабок-яжек хватает.

Пока нет основательно обдуманных DSL, буду продвигать свой. Без первого шага путь не пройти.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

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

Это было легко сделать. Просто не вестись на провокации и игнорировать все политические и исторические комментарии. Тогда бы все эти комментарии анонимусов стали бы оффтопом и их можно было бы смело удалять.

Что касается русского языка, то, как тут и говорили, у него есть своя сила. Он больше использует приставки, суффиксы, окончания и т.д. На этом можно было бы сыграть для достижения краткости и надёжности. Могу привести 2 примера:

1.

субъект помыть объект в случае совпадения субъекта и объекта заменяется на субъект помыться

2.

Большинство глаголов в русском, в отличие от английского, имеют определённые окончания. Соответственно, можно было бы отличать функцию от данных по этому признаку. Но тут надо было бы заморочиться с исключениями, чтобы не принять «кровать», например, за глагол.

Лингвисты привёли бы больше примеров.

Вторая проблема у этого конкретного языка - ниша. ФП и лиспоподобные языки, вероятно, хороши для парсинга или вычисления математических формул. Если же задача императивная, то они не конкуренты для языков типа Pascal, C, Python. Практика показывает, что это не только моё личное мнение. То есть отсекаем сразу условно 99% программистов.

Kogrom
()
Ответ на: комментарий от anonymous

Меня подобный цирк не интересует. Что было 70 лет назад, 100 лет назад, 200, печенеги, половцы. Разговор про «сейчас», актуальное время.

Ты глуп не потому что не знаешь историю, а потому что не хочешь её знать. Менталитет народа формируется десятками, а то и сотнями поколений. То благостное состояние, в котором пребывает Европа последние лет пятьдесят, обусловлено результатами Второй Мировой. Но европейцы изо всех сил стремятся забыть историю, как и ты. Поэтому лет через десять, максимум через двадцать, их благоденствие закончится и всё вернётся на круги своя. Если сомневаешься, то посмотри что творят франки и англы в Африке прямо «сейчас», в актуальное время.

anonymous
()
Ответ на: комментарий от anonymous

Ты глуп

)) которые начинаются вот так, пишут те, у кого в жизни все плохо. Оценки лузеров мне не интересны.

anonymous
()
Ответ на: комментарий от Kogrom

Если же задача императивная, то они не конкуренты для языков типа Pascal, C, Python. Практика показывает, что это не только моё личное мнение. То есть отсекаем сразу условно 99% программистов.

@monk сказал, что такой стиль кода более readable /скобок меньше/.

Когда уже модераторы придут?
Надоели эти «политики» и «философы».

Владимир

anonymous
()
Ответ на: комментарий от monk

Для 10 строчек xmodmap писать программу?

В арифметике Пеано еще меньше аксиом, но они не от балды записаны.

На что? Предложишь перевод? И, чтобы два раза не вставать, синус тоже предложишь перевести как «складка»?

А что я записывался в ряды будущих Ломоносовых, который придумывал и популяризировал термины. Думаешь, нормальное импортозамещение - это просто?

В ГОСТ есть точка

И есть запятая, как основное обозначение. Что, не смог руссифицировать бусурманский разделитель десятичной запятой, руссификатор ты наш?

И этот ГОСТ’ы с точкой ввели в 90-ые, когда их значимость сильно упала.

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

Вот и надо это расписывать, а не генерить непонятные тексты. Я уверен, что это у тебя не работает от слова «никак».

Пока нет основательно обдуманных DSL, буду продвигать свой. Без первого шага путь не пройти.

Вот и займись над обдумыванием первого шага, изучением основ, языка, лингвистики и прочей «гуманитарщины». Кстати, Хомский - гуманитарий.

anonymous
()
Ответ на: комментарий от anonymous

а Горбачёв учился, а следовательно и формировал во многом мировоззрение, в Киеве.

а давно МГУ в Киев переехал?

Хрущёв был из «донецких»

родился в 1894 году в селе Калиновка Ольховской волости Дмитриевского уезда Курской губернии

В своих мемуарах, Хрущёв подчёркивал, что он по происхождению этнический русский.

anonymous
()
Ответ на: комментарий от monk

Для 10 строчек xmodmap писать программу?

  • xmodmap уже лет 15 считается легаси

  • конфига твоего я тоже не вижу

На что? Предложишь перевод?

э, ю, я, очевидно же. Хотя стоп, в русском приняты кальки, значит ХУЗ

И, чтобы два раза не вставать, синус тоже предложишь перевести как «складка»?

а что не так?

anonymous
()
Ответ на: комментарий от anonymous

Украинец и хохол это не национальность, а менталитет.

а русский?

anonymous
()
Ответ на: комментарий от anonymous

В своих мемуарах, Хрущёв подчёркивал, что он по происхождению этнический русский.

Номинально русский … /впрочем это о многих можно сказать/.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Номинально русский … /впрочем это о многих можно сказать/.

о, богоизбранность подвезли

anonymous
()
Ответ на: комментарий от anonymous

monk сказал, что такой стиль кода более readable /скобок меньше/.

Это для эстетов, академиков. Для нас, простых работяг (для которых якобы автор создаёт язык) ситуация другая. Патерн-матчинг, рекурсия сразу в хелловорде? Это, наверное, для шибко умных. Спасибо, не надо.

Kogrom
()
Ответ на: комментарий от Kogrom

субъект помыть объект в случае совпадения субъекта и объекта заменяется на субъект помыться

Разумно. Для ООП. Буду при переводе учитывать. Для не-ООП субъектом всегда является среда выполнения программы, поэтому малоприменимо.

Соответственно, можно было бы отличать функцию от данных по этому признаку.

Для того, чтобы это было надо, чтобы синтаксически они не различались. Например, чтобы было возможно

на (100,100) открыть-окно шириной 200 высотой 200

вместо нынешнего

открыть-окно #:на (100,100) #:шириной 200 #:высотой 200

Но возникает две проблемы. Во-первых, сейчас совсем не все функции являются глаголами. Придётся делать функции типа вычислить-синус, вычислить-момент-смещения, получить-количество-строк… В-вторых, в лиспе любая функция может быть аргументом. Как разбирать скомпоновать инкрементировать прочитать-число? Если больше одного глагола, то брать по порядку слов?

ФП и лиспоподобные языки, вероятно, хороши для парсинга или вычисления математических формул. Если же задача императивная, то они не конкуренты для языков типа Pascal, C, Python.

Это не для лиспоподобных, а для чистых ФП, в которых запрещено присваивание. В лиспоподобных никакого запрета на присваивание нет, поэтому любой текст с Python или Pascal можно переписывать строка в сроку с поправкой на скобки. По моему примеру с подъязыком надо-быстро, думаю, это видно.

Поэтому ниша как раз объединение ниш Python и Pascal. Базовый язык должен обеспечить удобство питона (синтаксис на отступах, динамическая типизация), подъязык надо-быстро должен обеспечить скорость Си при сохранении единства синтаксиса. И поверх всего этого полнофункциональная система макросов Racket, которая позволяет легко создать DSL под любую задачу.

monk ★★★★★
() автор топика
Ответ на: комментарий от Kogrom

Для нас, простых работяг (для которых якобы автор создаёт язык) ситуация другая. Патерн-матчинг, рекурсия сразу в хелловорде? Это, наверное, для шибко умных. Спасибо, не надо.

Можешь привести пример на питоне без зависимостей на тяжёлые библиотеки. Распишу, как будет на этом языке.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Можешь привести пример на питоне без зависимостей на тяжёлые библиотеки. Распишу, как будет на этом языке.

Может быть взять примеры кодов с wiki?
Тогда проще будет и сопоставление синтаксиса.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

И есть запятая, как основное обозначение. Что, не смог руссифицировать бусурманский разделитель десятичной запятой, руссификатор ты наш?

Почему не смог. Задачи такой не ставил. Ладно, русифицирую, раз это кому-то важно.

Вот и надо это расписывать, а не генерить непонятные тексты. Я уверен, что это у тебя не работает от слова «никак».

Готовой полной реализации нет. По отдельности (запись в сишный файл, компиляция gcc, подключение внешней функции) есть.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Во-первых, сейчас совсем не все функции являются глаголами. Придётся делать функции типа вычислить-синус, вычислить-момент-смещения, получить-количество-строк…

В реальных программах так и разделяют: вычислить_синус или ВычислитьСинус.

В-вторых, в лиспе любая функция может быть аргументом. Как разбирать скомпоновать инкрементировать прочитать-число? Если больше одного глагола, то брать по порядку слов?

Если такое встречается в 3% случаев, то можно какой-нибудь значок предусмотреть. С другой стороны, я понял, что нужно скомпоновать две функции. Вероятно, и программу можно этому научить даже без дополнительного символа.

И поверх всего этого полнофункциональная система макросов Racket, которая позволяет легко создать DSL под любую задачу.

О чём я и говорю. Видит обычный программист страшные слова типа макрос и DSL, и идёт мимо. Или про политику начинает рассуждать. Зачем же сразу пугать?

Kogrom
()
Ответ на: комментарий от anonymous

конфига твоего я тоже не вижу

xmodmap -e "keycode 10 = 1 exclam less exclam"
xmodmap -e "keycode 11 = 2 at at quotedbl"
xmodmap -e "keycode  12 = 3 numbersign numbersign numerosign"
xmodmap -e "keycode  13 = 4 dollar dollar semicolon"
xmodmap -e "keycode  14 = 5 percent greater percent"
xmodmap -e "keycode  15 = 6 asciicircum asciicircum colon"
xmodmap -e "keycode  16 = 7 ampersand ampersand question"
xmodmap -e "keycode  17 = 8 asterisk grave asterisk"
xmodmap -e "keycode  18 = 9 parenleft bracketleft parenleft"
xmodmap -e "keycode  19 = 0 parenright bracketright parenright"
monk ★★★★★
() автор топика

Новый язык программирования для русскоговорящих

А будут варианты для национальных республик в составе РФ? Ну например на адыгейском? Если нет то это ущемляет права малочисленных народов.

mbivanyuk ★★★★★
()
Ответ на: комментарий от mbivanyuk

А будут варианты для национальных республик в составе РФ? Ну например на адыгейском? Если нет то это ущемляет права малочисленных народов.

Пусть пишут, я не против.

monk ★★★★★
() автор топика
Ответ на: комментарий от monk

Задачи такой не ставил. Ладно, русифицирую, раз это кому-то важно.

Вот такое словесное описание про весь твой «язык для русскоговрящих». Ты не ставил задачу «говорить по-русски». Зачем-то приписал синтаксис Хаскеля? В каком месте здесь синтаксис Хаскеля. Тупо ловишь хайп (хайп - это по-«русски») на базвордах «русский», «хаскель», которые здесь не причем.

запись в сишный файл, компиляция gcc, подключение внешней функции

И причем тут «надо-быстро». Это про генерацию внеших модулей на басурманском языке.

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

А задачи «говорить по русски» у тебя не было, от слова «никак».

anonymous
()
Ответ на: комментарий от monk

Можешь привести пример на питоне без зависимостей на тяжёлые библиотеки.

Хм, задача нетривиальная, учитывая контекст. Тут будет либо ООП, либо явное использование побочных эффектов, типа:

х = получить_момент_времени()
какая_то_функция()
задержка = получить_момент_времени() - х

Но мне также интересно как будет выглядеть простая задача без побочных эффектов и ООП (пример на 2-м питоне из моих старых опытов):

def calc_bonus(tau, wordLen, hints):
    tau -= (wordLen // 4)
    bonus = - hints
    points = [(2, 5), (7, 3), (15, 2), (30, 1)]
    for p in points:
        if tau < p[0]:
            bonus += p[1]
            break
    return max(0, bonus)
Kogrom
()
Ответ на: комментарий от Kogrom
х = получить_момент_времени()
какая_то_функция()
задержка = получить_момент_времени() - х

Это так и будет. Разве что вместо _ можно - в именах использовать. Побочные эффекты не запрещены.

Второе будет так (имена не переводил):

calc-bonus(tau wordLen hints) =
    tau := tau - wordLen // 4
    bonus = - hints
    points = '((2 5) (7 3) (15 2) (30 1))
    цикл/первый 
       ;
         p points
         #:когда tau < p[0]
       bonus := bonus + p[1]
    макс 0 bonus

или так (массив points вместо списка и условие цикла в одну строку)

calc-bonus(tau wordLen hints) =
    tau := tau - wordLen // 4
    bonus = - hints
    points = #((2 5) (7 3) (15 2) (30 1))
    цикл/первый (p points; #:когда tau < p[0])
       bonus := bonus + p[1]
    макс 0 bonus

= используется при определении новой переменной, := при изменении существующей

monk ★★★★★
() автор топика
Последнее исправление: monk (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.