Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: Devorator linguarum от Октября 31, 2018, 19:59

Название: Языки программирования
Отправлено: Devorator linguarum от Октября 31, 2018, 19:59
Вопросы только для тех, кому данная сфера не чужда.

1. Какие языки программирования вы изучали?
2. Какой из них вы предпочитаете использовать?
Название: Языки программирования
Отправлено: Эслыш от Октября 31, 2018, 20:15
В учебных целях приходилось иметь дело с Паскалем, Си, Ассемблером, Лиспом и Scheme.
Название: Языки программирования
Отправлено: Devorator linguarum от Октября 31, 2018, 20:59
Я про себя не рассказал. В довольно мохнатые годы (начало 1990-х) учил я сначала Бейсик, потом Паскаль и азы Ассемблера. Бейсик явно шел лучше. И потом мне пригодился, потому что на его турбо-диалекте, обладающем, в отличие от большинства других тогдашних бейсиков, тем достоинством, что он позволял компилировать полноценные exe-файлы, я сделал себе некоторые облегчающие жизнь программы, в частности, для обработки текстов. Сейчас-то такие задачи, вроде составления частотного словаря для определенного текста, стандартными программами решаются, но тогда их в доступе не было, так что приходилось вот так самому подобные инструменты изобретать.
Название: Языки программирования
Отправлено: From_Odessa от Октября 31, 2018, 21:21
В лицее, где проучился один год, изучал Турбопаскаль. Тогда мало что понимал и разбираться не хотел, по сути. Позднее, в первых двух семестрах (прежде всего, во втором) универа изучал С++. Вот тогда реально разобрался, мне понравилось, я даже некоторое время жалел, что не пошёл учиться на программиста. Ну и, естественно, что С++ мне ближе любого другого языка программирования. Впрочем, по-настоящему я не углулялся, конечно. А главным все же считаю не умение использовать синтаксис языка, а построение алгоритма. Но это к слову.

ХТМЛ - не язык программирования, но его упомяну тоже. В начале 2010-го активно занялся сайтостроительством, тогда же изучал и использовал его самостоятельно (при этом там были условные операторы, хотя мне позже говорили, что вроде их в ХТМЛ быть не должно). Параллельно изучал и использовал таблицы стилей, то есть, CSS.
Название: Языки программирования
Отправлено: Bhudh от Ноября 1, 2018, 00:49
В детстве читал учебник информатики, там был какой-то BASIC, потом читал учебник по Турбо Паскалю.
Впоследствии у друга на компе первое пригодилось для кодинга на QBASIC (хотя больше глядели в хелп, благо он там достаточно мощный). ТП потом установил на комп, но так особенно и не попробовал.
Более-менее занимался на Pythonʼе, трогал PHP, Lua, Ruby, в игре Colobot используется C-подобный CBot (по сути урезанный C с несколькими встроенными игровыми типами и функциями).
Ну а основное, конечно, JavaScript, пишу юзерскрипты для тех сайтов, где не хватает юзер-CSS, и занимаюсь всякой фигнёй типа рисования на canvas.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 00:39
Начну с конца. В последнее время увлекся APL (на самом деле, книжка по APL попала ко мне еще в школьные годы, но тогда у меня не было на чем программировать на нем — просто почитал и забросил) — использую преимущественно свой вариант на основе NGN APL, куда я добавил некоторые фичи, которых мне в его изначальном варианте не хватало (некоторые примеры кода можно посмотреть в теме Считаем до миллиона). Сам NGN APL (и, следовательно, мой его форк) написан на JavaScript'е, что делает его изменение более простым, чем если бы это был, например, исходник на C/C++, хотя, вероятно, снижает производительность программы. APL мне нравится своей сверхлаконичностью и нестандартной логикой — своего рода аналог регексов для работы с массивами. JavaScript — ну, язык как язык, с C-подобным синтаксисом и некоторыми возможностями функционального программирования, интересный преимущественно тем, что доступен в каждом браузере (хотя я предпочитаю консоль и, следовательно, NodeJS), с низким порогом вхождения и быстрым осознанием того, как топорно там все сделано. Стандартный ввод-вывод в NodeJS — это нечто, по сравнению с ним Java’овские ридеры и райтеры кажутся песней...

Перед этим был период Python'а (который не имеет отношения к моему нику, придуманному независимо и из другого источника — собственно, тогда я еще не был знаком с этим языком; позже долго избегал его — меня отталкивал его «детский» синтаксис, и лишь спустя годы распробовал и обнаружил в нем кучу интересностей, с которыми чуть раньше встретился в Clojure и других лиспах). Язык многопарадигматичный — при желании, можно программировать на нем почти как на лиспе, и такой код будет вполне валидным (хотя язык и более заточен на тот самый «детский» стиль — процедурный код плюс, возможно, ООП-обертка воспринимается как нечто более мейнстримное, делать все через лямбды без костылей не получится...). Или взять генераторные функции с yield, позволяющим вывернуть алгоритм наизнанку.

(Тут я несовсем согласен с мыслью, что язык второстепенен по сравнению с алгоритмом. Безусловно, очень многие вещи делаются на разных языках практически иденично, но некоторые синтаксические и алгоритмические средства, присутствующие в том или ином языке, не имеют точных аналогов в другом — да, при желании, их можно имитировать, но результат может получиться некрасивым, слишком костыльным и/или громоздким. И наоборот, отсутсвие чего-либо в языке способствует использованию чего-то другого — взять, к примеру, классический BASIC, в котором нет структурных типов данных и процедур в обычном смысле, но зато имеется DATA/READ/RESTORE — в сущности, возможность задавать предопределенный список значений с последовательной выборкой из него. И если некий алгоритм на BASIC'е построен вокруг этих операторов, то переделка его, например, на C потребует реализовать собственный аналог такой очереди — что, в общем-то, просто, пока дело не доходит до RESTORE на метку, аналог чего, в общем-то, тоже не так уж и сложно придумать — но для изначального языка это средство «из коробки» и поэтому более самоочевидное, а для конечного — лишь надстройка, к изобретению которой надо додуматься. И наоборот, при переписывании на тот самый классический BASIC (при отсутствии в нем настоящих процедур и стека данных) чего-то типа ханойских башен или другого рекурсивного алгоритма, приходится либо имитировать стек при помощи массива, либо, лучше, вообще без него обойтись, заменив временное хранение обратным вычислением. В конечном итоге, различные языки позволяют взглянуть на один и тот же алгоритм под разным углом.

Ну а так, что-угодно можно сделать при помощи чего-угодно — видел, например, в одном старом учебнике реализацию двоичного дерева на ALGOL-60 — при том, что в нем нет ни структур, ни указателей — только массивы фиксированной длины — но, на самом деле, даже и этого вполне достаточно для реализации той же логики).


Clojure и чуть раньше перед ним Scheme — в общем, LISP (хотя к собственно Common LISP я так и не успел достаточно приблизиться). Другой взгляд на построение алгоритмов, другой набор средств: например, неизменяемые локальные «переменные», или рекурсия везде, где в других языках это считается плохим тоном и ведет к переполнению стека. Впрочем, присмотревшись, в рекурсивных алгоритмах начинаешь угадывать обычные циклы (коими хвостовая рекурсия на самом деле и является). С переходом от Scheme (заточенной под рекурсию) к Clojure (где основная фишка — ленивые последовательности) постепенно отказался и от рекурсивных циклов, их место заняли map, filter и прочие функции для манипуляций с последовательностями (и позже знакомство с ними пригодилось и в Python'е. В принципе, ФП сейчас достаточно мейнстримно, и подобные средства добавляются во все уважающие себя современные языки). Да, и макросы — в лисповском варианте, ломающие сишный стереотип, что это лучшее средство сделать свою программу максимально бажной и неотлаживаемой. Впрочем, Clojure изначально имеет достаточно мощный их набор, так что определять свои макросы мне практически не требовалось. Python или JS многое теряют, не имея подобных средств.

В период увлечения лиспами, я ориентировался на их JVM-реализации (напр., в случае Scheme — SISC или KAWA), хотя собственно Java тогда мне не казалась особо интересной — мне нравилась концепция виртуальной машины, организация библиотек, кроссплатформенность — но сам язык, для которого эта виртуальная машина была построена, воспринимался как слишком громоздкий, перенасыщенный дидактическим ковырянием и навязчивым ООП там, где хватило бы и процедурного кода. Но имея дело с Clojure, я так или иначе пользовался Java-библиотеками, и некоторая часть моего кода позже была написана на собственно Java'е.

SED — как правило, его считают несовсем языком программирования, а, скорее, утилитой для манипуляций с текстом, хотя некоторые умельцы создавали на нем, например, программу для игры в шахматы. Не могу похвастаться тем же, но одна из первых моих программ с использованием sed — форумный бот для ЛФ — представляла собой батник, где обмен с сервером осуществлялся при помощи wget, а обработка полученных данных производилась при помощи sed и некоторых других утилит. В общем, это язык программирования, но очень урезанный, где нет переменных в обычном смысле, алгоритмические средства ограничиваются меткой и переходом, а основной инструмент — регексы (они же регулярные выражения — шаблоны для поиска (и замены) в тексте. Кстати, еще одно средство, которое в наши дни есть в любом уважающем себя языке — после победного шествия perl'а в 90-е, подхватившего эту идею. Регексы в sed'е не самые мощные — например, Java использует их более продвинутый вариант, но на sed весь код может состоять из регексов ПОЛНОСТЬЮ). В общем, хотите освоиться с регулярными выражениями — поиграйтесь с sed.

В принципе, и язык командной оболочки (который используется в окне командной строки и на котором пишутся батники) тоже можно рассматривать как язык программирования. Просто сам по себе он мало что умеет — его работа сводится преимущественно к вызову других программ... Ну а так, там есть переменные, процедуры, цикл for с довольно неудобным синтаксисом, ветвление и переход на метку, в конце-концов. В общем, менее удобный, чем bash, но тоже вполне себе алгоритмический язык.

PHP — серверный язык для веб-страниц. Что тут еще добавить. Использую для расширений функционала собственного блога и некоторых других мелочей. Подразумевается, что php-шник html тоже должен знать.

Assembler. К сожалению, я уже не застал времен, когда допиливание на асме всяких мультиэдитов было еще актуально. С другой стороны, моей мечтой было написание компиляторов, для чего знание ассемблера более чем полезно. Мой курсач по системному программированию представлял собой компилятор с языка ассемблера, дававший на выходе .com-файл (простейший выполняемый формат). К сожалению, довести его до полноценного состояния я так и не успел — среди поддерживаемых команд были только арифметические операции, чего хватило для получения пятерки, но не для того, чтобы я сам мог им пользоваться, позже появились другие дела — в общем, проект так и остался в сыром виде...
А еще ассемблер дает понимание того, насколько в этом мире все неоптимально...

Pascal, Delphi. Основной институтский язык (хотя немного странно, почему нам преподавали, в первую очередь, паскаль, а не С++, например, что более соответствовало бы программисткой специальности.
Сейчас в сети я чаще натыкаюсь на студентов, изучающих C++, чем паскаль. Возможно, Delphi и TurboPascal в 90-е были более актуальны, чем сейчас). Основное преимущество Delphi — простота в создании GUI (чего мне не хватало в «школьных» языках, как и в TP), хотя позже пришел к выводу, что кнопкотаскание лишь убивает время, давая в конечном итоге программу, лишенную по сравнению с консольником средств внешней автоматизации, таких как перенаправление потоков ввода/вывода. Так что со временем я начал писать консольные программы на Delphi (не на TP, поскольку и в самом языке появились некоторые дополнительные возможности, которых до Delphi не было), а позже перешел на опенсорсный FreePascal (он же FPC) с теми же языковыми средствами. Если подумать, ООП-средства Delphi и его клонов имеют много общего с имеющимися в Java'е и C# — наследование от единственного класса плюс множественное наследование интерфейсов, свойства и пр. — и намного удобнее громоздких наворотов С++, просто созданных для простреливания себе ног всевозможными способами — только Java'у все хвалят, как и C#, а С++ так вообще стандарт, а вот Delphi почему-то «для ламеров». Все дело в низком пороге вхождения?..

BASIC — основной школьный язык программирования. Вначале был GW-BASIC, позже в школе появились более навороченные TurboBASIC и QBASIC. Моего желания создать на всем этом нечто выдающееся, типа компьютерной игрушки или своего собственного языка программирования, было явно больше, чем опыта написания чего-то большого и при этом работоспособного :( Хотя, в общем-то, программирование было моим любимым предметом в старших классах и в пределах школьной программы трудностей не вызывало. Сейчас тоже иногда играюсь, отдавая предпочтение «ностальгичным» диалектам (т.е., VBA — уже не бейсик, ІМНО: совершенно другая философия языка и парадигма типов, да и классический BASIC-код в нем попросту не работает). В неосуществленных планах — написать собственный BASIC, наследующий синтаксис и общую философию старых диалектов, но при этом позволяющий использовать самостотельные программы в качестве процедур и функций, расширяющий набор доступных типов, использующий некоторые элементы ФП… — в общем, это можно сравнить с примерно тем путем, по которому пошло развитие APL. Кстати, классическая интерактивная среда разработки этих языков имеет много общего — дань эпохи печатных терминалов, где вместо технически невозможных в то время экранных редакторов при редактировании больших программ использовалась ручная нумерация строк.

Хотя первым языком, с которым я познакомился, был C. Правда, на нем я тогда не программировал (разве что немного на бумаге) — просто читал хорошо написанную книжку. Простой понятный минималистичный язык с прозрачной логикой, где есть все необходимое и ничего лишнего. Впрочем, практического опыта написания кода на нем у меня не так уж и много — всегда был какой-то другой язык, преимущественно на котором я программировал. Вот C++, кстати, не люблю — хотя некоторые идеи из него мне были близки в свое время, мне в нем видится преимущественно язык-монстр с кучей переусложнений непонятно ради чего. Либо это последствия первого впечатления (Страуструп пишет хуже, чем Прата)?..

Вернее, самая первая «моя» программа была написана на PL/1. «Моя» в кавычках, потому что писала ее преимущественно мама, а я лишь смотрел и мало что понимал в происходящем. Впрочем, некоторые моменты все же принесли пользу, кое-что отложилось в памяти, и когда я позже по-настоящему начал знакомство с программированием, основные понятия уже были для меня знакомы.
Название: Языки программирования
Отправлено: Vertaler от Ноября 2, 2018, 00:53
Цитировать
Или взять генераторные функции с yield, позволяющим вывернуть алгоритм наизнанку.
Ой, а «наизнанку» — это как?
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 00:56
P.S. Еще можно написать про языки, мое знакомство с которыми ограничилось написанием одной-двух программ без дальнейшего углубления — Lua, FORTRAN, Haskell, perl, C#, встроенные скриптовые языки некоторых программ, а также языки разметки (HTML, LaTeX, ABC), языки запросов (SQL в различных вариациях), и пр., и пр. Я много чем интересуюсь, и далеко не всегда это находит практическое применение — скорее, мне интересны концепции, используемые в том или ином языке (см. выше про взгляд на один и тот же алгоритм под разным углом).
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 01:21
Цитировать
Или взять генераторные функции с yield, позволяющим вывернуть алгоритм наизнанку.
Ой, а «наизнанку» — это как?
Например, так: https://docs.python.org/2.5/ref/yieldexpr.html

Впрочем, и в более общем случае yield превращает подпрограмму в сопрограмму, позволяя любой алгоритм, циклически генерирующий последовательности значений, сделать «ленивым» (т.е., приостанавливающимся и возобновляющим работу по мере необходимости). Как сделать нечто подобное в языке типа JS, где yield/сопрограммы/континуации или другие подобные средства отсутствуют — только return? Именно что руками вывернуть весь алгоритм наизнанку, превратив его в серию вызовов функции, которая при каждом вызове должна каким-то образом продолжить вычисление с того места, где в прошлый раз остановилась... Выглядит так, что yield выворачивает алгоритм подпрограммы, не выворачивая его.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 01:33
ХТМЛ - не язык программирования, но его упомяну тоже. В начале 2010-го активно занялся сайтостроительством, тогда же изучал и использовал его самостоятельно (при этом там были условные операторы, хотя мне позже говорили, что вроде их в ХТМЛ быть не должно).
На самом деле, есть директивы условной обработки, которые поддерживались IE и использоались преимущественно для автоматического определения версии браузера. В других браузерных движках, насколько мне известно, их поддержка отсутствует — не зная о них, Мозилла или Хром увидит на их месте лишь закомментированный код.

Это не считая условных операторов во встроенном JavaScript'е, который хоть формально и считается чем-то отдельным от HTML, но на практике является полноценной его частью.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 02:03
Как сделать нечто подобное в языке типа JS, где yield/сопрограммы/континуации или другие подобные средства отсутствуют — только return?
Ну, во-первых, уже есть (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield).
Во-вторых, такое легко реализовывалось через замыкания и синглетоны.
Название: Языки программирования
Отправлено: Upliner от Ноября 2, 2018, 02:50
В детстве впечатлился, как брат делает делает игры и медиаплееры на Паскале, вот и добился, чтобы меня тоже научили. Брат правда и на Бейсике игры делал, но в какое-то время у нас все стали считать Бейсик неполноценным языком. Сделал на нём несколько игр. Одной из основных были лабиринты. Потом перешёл на Visual C++. На нём тоже делал игры, в том числе -- клон одной из моих любимых игр Supaplex и клон одной из анимационных программ. Правда после того, как у нас появился Flash, на свой движок векторных мультиков забил. Ещё сделал 3d-версию лабиринтов и небольшой симулятор метро (просто бродить и ездить на поездах, больше ничего). Это всё до 18 лет. В 18 лет пошёл работать и делал финансовую базу данных, в основном на VBA и SQL, но и для C# применение нашлось. C# конечно намного удобнее VBA, особенно после того как Linq появился. В свободное от работы время кодил на Java, участвовал в разработке JOSM. Потом эта работа мне надоела и я стал искать другую. И нашёл -- сделал довольно специфический медиасервер под nginx на чистом C. По счастью, работодатель оказался из Киева. Потом этот же работодатель предложил мне проекты на Golang для разных сетевых бекендов. Быстренько изучил этот язык и с тех пор он у меня основной. Для побочных проектов и мелких утилит использую Python.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 04:00
Во-вторых, такое легко реализовывалось через замыкания и синглетоны.
Даже если так:
def generator():
    for i in range(10):
        for j in range(10):
            yield i*j
Хотя, если переделать for на while, а while — на функцию с рекурсией, и потом присобачить куда-то замыкания... Да, возможно, но легко?
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 04:15
Как сделать нечто подобное в языке типа JS, где yield/сопрограммы/континуации или другие подобные средства отсутствуют — только return?
Ну, во-первых, уже есть (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield).
Круто :up:
Даже мой древний WinXP-совместимый нод эту фичу поддерживает. Почему я никогда о ней не слышал?
Название: Языки программирования
Отправлено: злой от Ноября 2, 2018, 07:11
Как сделать нечто подобное в языке типа JS, где yield/сопрограммы/континуации или другие подобные средства отсутствуют — только return?
Ну, во-первых, уже есть (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield).
Во-вторых, такое легко реализовывалось через замыкания и синглетоны.

Вот-вот. Только хотел сказать, что в ES6 есть генераторы, правда, как ими пользоваться на практике, я ещё не вкурил.

Вообще сейчас период бурного развития JS. Каждый год появляются новые "фенечки" вроде использования промисов в стиле Си-шарпа через async/await и т. п.

Ещё матёрые JS-программеры очень любят call/apply и "прививать" методы объекту через подмену прототипа родительского класса. Такие программы тяжело исправлять, сиди и гадай, от кого эта функция в конечном итоге на следует свой this. В общем, JS я люблю, он какой-то эстетически красивый, в противоположность PHP, в котором то же самое будет выглядеть как какое-то жуткое нагромождение $this->, array ('obj' => и т. п.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 08:30
На самом деле, есть директивы условной обработки, которые поддерживались IE и использоались преимущественно для автоматического определения версии браузера. В других браузерных движках, насколько мне известно, их поддержка отсутствует — не зная о них, Мозилла или Хром увидит на их месте лишь закомментированный код.

Это не считая условных операторов во встроенном JavaScript'е, который хоть формально и считается чем-то отдельным от HTML, но на практике является полноценной его частью.
Эти условные операторы нормально воспринимались и ФФ, и Оперой, и Хромом. В общем, я не знаю, что это было, я думал, что это обычная часть ХТМЛ) Это было при работе с сайтом на Юкозе. Там, собственно, приходилось активно использовать эти условные операторы. Может, это как раз встроенный ДжаваСкрипт?
Название: Языки программирования
Отправлено: Easyskanker от Ноября 2, 2018, 11:44
Турбо Паскаль. Пожалуй, лучший язык программирования. Освойте его, и другие языки не нужны. Даже человеческие и анатомические.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 12:03
На самом деле, есть директивы условной обработки, которые поддерживались IE и использоались преимущественно для автоматического определения версии браузера. В других браузерных движках, насколько мне известно, их поддержка отсутствует — не зная о них, Мозилла или Хром увидит на их месте лишь закомментированный код.

Это не считая условных операторов во встроенном JavaScript'е, который хоть формально и считается чем-то отдельным от HTML, но на практике является полноценной его частью.
Эти условные операторы нормально воспринимались и ФФ, и Оперой, и Хромом. В общем, я не знаю, что это было, я думал, что это обычная часть ХТМЛ) Это было при работе с сайтом на Юкозе. Там, собственно, приходилось активно использовать эти условные операторы. Может, это как раз встроенный ДжаваСкрипт?
А как они хоть выглядели, и для чего использовались?
Если Юкоз, то еще, возможно, это даже не HTML, а что-то свое юкозовское, обрабатываемое на их сервере — в общем, часть синтаксиса юкозовского шаблонизатора. Либо, Юкоз позволяет размещать у себя php (где условные операторы тоже есть, как и во всяком алгоритмическом языке)?
Название: Языки программирования
Отправлено: Lodur от Ноября 2, 2018, 12:20
Вопросы только для тех, кому данная сфера не чужда.

1. Какие языки программирования вы изучали?
2. Какой из них вы предпочитаете использовать?
1. Ой, каких только не изучал. Правда систематически - только C (с C++) и Ассемблер, на заре карьеры, связанной с вычислительной техникой. Всё остальное - "галопом по Европам".
2. Никакой. ::) Из того, что реально хоть как-то использовал - пару сайтов на PHP делал, и несколько скриптов для караоке на Lua.
Название: Языки программирования
Отправлено: DarkMax2 от Ноября 2, 2018, 12:22
Вопросы только для тех, кому данная сфера не чужда.

1. Какие языки программирования вы изучали?
2. Какой из них вы предпочитаете использовать?
Изучил всего один: C++.
Понимаю, естественно, C#, немного Дельфи и Паскаль. На последнем приходилось даже контрольные писать в школе.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 12:28
2Python

Вот пример кода оттуда:

Цитировать
<?if($MODULE_ID$='forum')?><div class="header-right-forum"><div class="header-forum">
<div class="date"><font color="black">$WDAY$, $DATE$, $TIME$</font></div>
<div class="user-bar"><font color="black"><?if($USER_LOGGED_IN$)?><!--<s5200>-->Вы вошли как<!--</s>--> <a href="$PERSONAL_PAGE_LINK$"><font color="black"><b>$USERNAME$</b></font></a></b><?else?><!--<s5212>-->Приветствуем Вас,<!--</s>--> <b>$USERNAME$</b><?endif?></font></div>
<h1><!-- <logo> --><img src="http://earlyedition.ucoz.ru/bezymjannoe-2.png"><!-- </logo> --></h1>
<?else?>
<div class="header-right"><div class="header">
<h1><!-- <logo> --><img src="http://earlyedition.ucoz.ru/bezymjannoe-2.png"><!-- </logo> --></h1>
<?endif?>
<div class="navigation"><a href="$HOME_PAGE_LINK$"><!--<s5176>-->Главная<!--</s>--></a> <?if($USER_LOGGED_IN$)?><a href="$PERSONAL_PAGE_LINK$"><!--<s5214>-->Мой профиль<!--</s>--></a><?else?> <a href="$REGISTER_LINK$"><!--<s3089>-->Регистрация<!--</s>--></a><?endif?> <?if($USER_LOGGED_IN$)?> <a href="$LOGOUT_LINK$"><!--<s5164>-->Выход<!--</s>--></a><?else?> <a href="$LOGIN_LINK$"><!--<s3087>-->Вход<!--</s>--></a><?endif?></div>
</table>
</div></div>
Название: Языки программирования
Отправлено: Easyskanker от Ноября 2, 2018, 12:35
Выглядит внушительно и угрожающе.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 12:58
Не JS и не эксплореровские условные директивы. Некоторое внешнее сходство с php есть, но разница в деталях (т.е., это вообще не php). Думаю, всё же шаблонизатор.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 12:59
Не JS и не эксплореровские условные директивы. Некоторое внешнее сходство с php есть, но разница в деталях (т.е., это вообще не php). Думаю, всё же шаблонизатор.
Юкозовский шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 13:17
Не JS и не эксплореровские условные директивы. Некоторое внешнее сходство с php есть, но разница в деталях (т.е., это вообще не php). Думаю, всё же шаблонизатор.
Юкозовские шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Скажем так, если этот код скормить непосредственно браузеру, работающему с html, такой код будет несовсем рабочим (что-то отобразится, но не так, как задумал автор, возможно, некоторые теги шаблонизатора отобразятся в виде мусора либо нарушат структуру документа). Шаблонизатор — серверная программа, встраивающая в текст (в данном случае, html-текст) некоторые данные и производящая с ним некоторые другие манипуляции, это не часть собственно html (так же, как и php нельзя назвать языком в рамках html, хотя вместе с ним он чаще всего используется). Хотя все, что за пределами <?...?>, можно считать чистым html (впрочем, если просто их убрать, то в html-код попадут обе ветки if и, очевидно, не попадут встраиваемые данные, что, опять же, не соответствует изначальному замыслу создателя шаблона, а полученный html-код может оказаться невалидным).
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 14:38
Юкозовский шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Именно так.
Обрабатывается это не HTML-парсером браузера, а PHP-парсером Юкоза.
То, что между <? и ?> это вообще чистый PHP (это его скобки).
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 15:54
Юкозовский шаблонизатор в рамках ХТМЛ (в смеси с ХТМЛ)? Или нет?
Именно так.
Обрабатывается это не HTML-парсером браузера, а PHP-парсером Юкоза.
То, что между <? и ?> это вообще чистый PHP (это его скобки).
Скобки такие же, а вот их содержимое — не php. Напр., обратите внимание на $, обрамляющие переменные с обеих сторон (в php $ только слева), или на if/else/endif, отличающийся от обоих вариантов синтаксиса, принятого в php — нужно либо двоеточия добавить, либо убрать endif и добавить фигурные скобки.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 17:12
обратите внимание на $, обрамляющие переменные с обеих сторон
Так это переменные шаблонизатора, те же, что и в HTML-части кода.
Шаблонизатор их переводит в их значение, а потом уже подаёт на вход PHP-интерпретатору.

на if/else/endif, отличающийся от обоих вариантов синтаксиса, принятого в php
:??? Фигурные скобки в PHP, как и в JS, для единственного оператора не обязательны.
И двоеточия зачем? Там же не тернарный оператор.
В php есть два варианта if:
1) аналогичный используемому в C/Java/JS — ключевое слово endif не используется, два и более оператора требуют фигурных скобок. (Фрагмент внешнего html-текста — это точно один оператор? Как ведется подсчет — где кончается else?.. В общем, без {} пропадает ясность и возникает риск создать нечто глючное.)
2) позже добавленный вариант с endif и elseif — с двоеточиями вконце заголовков секций и возможностью нескольких операторов в каждой секции условной конструкции:
if ($a == 5):
    echo "a равно 5";
    echo "...";
elseif ($a == 6):
    echo "a равно 6";
    echo "!!!";
else:
    echo "a не равно ни 5 ни 6";
endif;

Да, еще обратите внимание в юкозовском примере на = там, где по логике php должно быть ==
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 17:17
Уже посмотрел, что напрочь забыл Pythonʼоподобный вариант ветвления.
Значит, это всё PHP-подобный шаблонизатор.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 17:35
Тут я несовсем согласен с мыслью, что язык второстепенен по сравнению с алгоритмом
Если Вы отвечали (хотя бы частично) на мои слова, то тут надо учесть, что я - дилетант ) С программированием знаком слабо, а с языками - совсем слабо, с тем же С++ поверхностно (да и пользовался им последний раз, кажется, 15 лет назад), с другими - почти никак (если не считать вот тот самый шаблонизатор Юкоза). Так что, конечно, я могу нести полную или частичную ерунду. И не с Вами мне об этом спорить ) Правда, такое же мнение высказывал мой преподаватель информатики в университете (что главное - алгоритм), который к тому времени, если не ошибаюсь, был практикующим программистом где-то с 30-летним стажем. Но это мнение лишь одного специалиста. К тому же, возможно, он как раз всю или почти всю карьеру пользовался языками, где все делается сходным образом.

Но вообще надо отметить, что я имел в виду, возможно, не совсем то, о чем Вы писали. Я хотел сказать, что самое главное - это понять, каким должен быть в целом путь компьютера, чтобы вы получали именно тот результат, который нужен. И это, как мне кажется, важнее, чем дальнейший перевод этой общей идеи в синтаксис языка (что никак не отменяет важности умения этим языком пользоваться по-настоящему эффективно). Или Вы именно об этом писали? И хотели сказать, что само формирование алгоритма частично зависит от того, на каком языке ты собираешься программировать?

Python, Вы не могли (или кто-то другой) на пальцах и простым языком объяснить мне, чем отличаются языки с ООП (для ООП) от других? Лучше всего на примере сходных языков, один из которых ООП, а второй - нет.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 17:55
чем отличаются языки с ООП (для ООП) от других?
Наличием ООП ;D.
Ну, вернее, наличием специальных средств для объединения разнородных данных в одну сущность, причём с наличием в этой же сущности (или в более высокой, но это относится уже конкретно к наследованию) средств обработки этих данных.
Сущность, объединяющая данные, зовётся объект, а конкретная функция, находящаяся в объекте и имеющая доступ к его данным, обычно называется метод.
Название: Языки программирования
Отправлено: _Swetlana от Ноября 2, 2018, 18:13
ООП отлаживать/радактировать хорошо. Изменил в одном месте - и всё. А при традиционном структурном программировании лазишь по всей программе и переделываешь, переделываешь.
Поздно я это поняла, когда делали последний хоздоговор.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 18:31
Наличием ООП ;D.
Ну, вернее, наличием специальных средств для объединения разнородных данных в одну сущность, причём с наличием в этой же сущности (или в более высокой, но это относится уже конкретно к наследованию) средств обработки этих данных.
Сущность, объединяющая данные, зовётся объект, а конкретная функция, находящаяся в объекте и имеющая доступ к его данным, обычно называется метод.
Спасибо. Попробую уточнить. Вот тот же С++. Он - язык ООП. Что в нем есть, чего нет в языках не ООП? В С++ есть классы. Это и делает его языком ООП?

ООП отлаживать/радактировать хорошо. Изменил в одном месте - и всё. А при традиционном структурном программировании лазишь по всей программе и переделываешь, переделываешь.
Вы имеете в виду, что при ООП достаточно изменить что-то там, где объявлялся класс, изменить что-то в теле класса, и это изменит все, что в программе связо с ним?
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 18:35
Цитировать
Так что, конечно, я могу нести полную или частичную ерунду.
Не ерунду — мысль вполне правильная, очень многие вещи на разных языках различаются лишь внешним оформлением, либо эти различия не так уж сложно устранить/заменить близким аналогом. К тому же, активно развивающиеся языки стремятся к реализации одних и тех же возможностей, которые были реализованы раньше у других. Допустим, C, Pascal и другие типичные языки того времени используют примерно один и тот же набор типов данных, алгоритмических конструкций, базовых операций — как и любой другой процедурный язык, создвавшийся в 70-е—80-е под влиянием идей ALGOL-60, а чуть позже BASIC и FORTRAN начала 90-х тоже уже имели вполне структурированный вид. В 90-е установилась мода на объекты и классы — место процедурных языков заняли их объектно-ориентированные диалекты/потомки (C++, Delphi, VisualBasic, Java и пр.), после 2010 модной тенденцией стало функциональное программирование (в последних версиях популярных языков, как правило, есть лямбды, замыкания и пр.)... В конечном итоге, программисты на разных языках используют примерно один и тот же инструментарий.

Я говорил лишь, что несовсем согласен. Чтобы можно было ощутить влияние языков на код, их возможности должны различаться достаточно радикально. «Интересный» язык должен быть в чем-то очень оригинальным, а в чем-то, возможно, очень урезанным.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 18:37
Вот тот же С++. Он - язык ООП. Что в нем есть, чего нет в языках не ООП? В С++ есть классы. Это и делает его языком ООП?
Если есть классы, это уже более узкий тип класс-ориентированного программирования.
Но в принципе верно. Делает его языком ООП то, что в нём есть классы и экземпляры этих классов.
Не будь экземпляров-объектов: какое тут к чертям ООП?
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 19:09
В С++ есть классы. Это и делает его языком ООП?
Безусловно.
Хотя, с другой стороны, классы в С++ можно и не использовать, а писать программы в C-подобном процедурном стиле. А вот если взять более чистый в плане ООП язык, как Java, то там попросту нельзя написать программу, не создав хотя бы один класс, в который заворачивается функция main (впрочем, неуверен, можно ли считать классом такой класс без экземпляров и потомков, или же его правильнее было бы считать модулем).

Если быть точным, классы — лишь один из вариантов реализации ООП, и, в принципе, существуют и объектно-ориентированные языки, где понятие «класс» не используется, а наследование обеспечивается через механизм прототипов. Подобная концепция используется в JavaScript'е, но в последних версиях классы там тоже появились. Ключевым пунктом для ООП являются объекты — сущности, содержащие в себе и данные, и код (инкапсуляция), подлежащие замене объектом с другой реализацией методов (полиморфизм) и, как правило, способные использовать методы, определенные ранее для других объектов (наследование).

С точки зрения внутренней реализации, объект (экземпляр класса) представляет собой структуру с указателями на функции-методы (размещенные непосредственно в структуре или вынесенные за ее пределы в таблицу методов). Такого рода структуру можно создать и в процедурном языке типа C, где понятие «класс» изначально отсутствует. Так что ООП-подход возможен и в языках, непосредственно под ООП не заточенных.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 19:35
в последних версиях классы там тоже появились
Там появился лишь синтактический сахар с зарезервированным с момента создания JS словом class.
Прототипное наследование как было, так и осталось.
Даже приватных и статических свойств не ввели.
Название: Языки программирования
Отправлено: _Swetlana от Ноября 2, 2018, 19:52
Да, изменяешь в описании класса, автоматически меняется во всех экземплярах.
До какого-то размера программы структурное программирование - милое занятие, и нечего тут огород городить. А потом вдруг раз - пушной зверь подкрался незаметно.
У меня, правда, была специфика. Эвристические алгоритмы отлаживают на реальных данных - вносят изменения, меняют настроечные константы и пр. И мне в голову приходили разные хорошие мысли,  два-три раза в день. Каждый день два раза я меняла алгоритм и вносила изменения в программу. Вот тут я поняла, что ООП - это сила, но было уже поздно.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 19:53
Каждый день два раза я меня алгоритм
Offtop
Начинает что-то подозревать.
Название: Языки программирования
Отправлено: _Swetlana от Ноября 2, 2018, 20:00
Каждый день два раза я меня алгоритм
Offtop
Начинает что-то подозревать.
А что?
Offtop
самой интересно ста
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 20:03
Offtop
У Вас есть алгоритм. :tss:
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 20:10
From_Odessa, вот спэшлфою на Хабре историческая статья: https://habr.com/company/ruvds/blog/428582.
Название: Языки программирования
Отправлено: Ömer от Ноября 2, 2018, 20:13
На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.
f[1]:=1
f[n_]:=n*f[n-1]
Название: Языки программирования
Отправлено: злой от Ноября 2, 2018, 20:39
На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.
f[1]:=1
f[n_]:=n*f[n-1]

На первый взгляд напоминает Лисп и прочую лямбду.
Название: Языки программирования
Отправлено: _Swetlana от Ноября 2, 2018, 20:41
На работе пишу, в основном, на C# и Powershell.
Самый любимый -- язык Mathematica.

Вот, например, как задать в Mathematica функцию факториал.
f[1]:=1
f[n_]:=n*f[n-1]
Испорченный Пролог  ;D
Программа неправильная. Задайте n=0, например.

       
Название: Языки программирования
Отправлено: злой от Ноября 2, 2018, 20:44
Ещё в последнее время в моде асинхронность. Правда, у тех же Node.js и PHP она не совсем настоящая, однопоточная, но это, с одной стороны, и хорошо, с истинной параллельностью выполнения и реентерабельностью кода вообще мозги в  баранку скрутятся, как сделать так, чтобы одна функция не убегала вперёд другой. Хотя, кажется, есть истинно многопоточная реализация асинхронности для Java, и вроде как Erlang. Сам с ними не работал.
Название: Языки программирования
Отправлено: _Swetlana от Ноября 2, 2018, 21:03
 :) from Z0+, конечно.
(https://preview.ibb.co/b2io3L/factorial.jpg) (https://ibb.co/cSaPcf)
Название: Языки программирования
Отправлено: Upliner от Ноября 2, 2018, 21:09
Хотя, кажется, есть истинно многопоточная реализация асинхронности для Java
Что есть по вашему "истинно многопоточная реализация асинхронности"?
Если уж на то пошло, то любой поток работает асинхронно. Проблемы возникают если разные потоки используют одни и те же данные. Классический способ решения этих проблем -- мютексы.
Но в последнее время всё более проявляется мода на другой подход -- вообще свести к минимуму расшаренные между разными потоками данных. Насколько я слышал, например в Rust каждый объект жёстко привязан только к одному потоку и другой поток может к нему обратиться только "одолжив" его -- на время перепривязав к себе.
Аналогично в Golang -- мютексы там есть, но считаются "неизбежным злом", жёсткой привязки объектов к потокам тоже нет. Однако использование мютексов не рекомендуется, и вместо этого рекомендуется, чтобы с данными работал только один поток, а остальные потоки получали данные от этого потока по специальным каналам.
Название: Языки программирования
Отправлено: Python от Ноября 2, 2018, 21:20
Если сделать данные по умолчанию immutable, как в Clojure, то половина проблем с синхронизацией отпадает. Впрочем, изменяемые объекты в нескольких вариантах для межпоточного взаимодействия там тоже имеются.
Название: Языки программирования
Отправлено: Bhudh от Ноября 2, 2018, 21:41
Правда, у тех же Node.js и PHP она не совсем настоящая, однопоточная
В JS (Node.js — это всего лишь серверная реализация JS-движка V8, а не отдельный язык) для параллельных вычислений есть Web Workers (https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API).
Название: Языки программирования
Отправлено: злой от Ноября 2, 2018, 21:54
Web Workers

А вот это интересно. Я думал ручками сделать какой-нибудь диспетчер, который запускал бы несколько процессов на разных ядрах и был бы между ними "связующим звеном", а тут, оказывается, такая готовая библиотека есть. Спасибо. А то действительно есть проблема, когда нагрузки высокие, а утилизируется только одно ядро из, допустим, четырёх.
Название: Языки программирования
Отправлено: From_Odessa от Ноября 2, 2018, 22:22
Хотя, с другой стороны, классы в С++ можно и не использовать, а писать программы в C-подобном процедурном стиле
Что я и делал...

From_Odessa, вот спэшлфою на Хабре историческая статья: https://habr.com/company/ruvds/blog/428582.
Спасибо!)
Название: Языки программирования
Отправлено: Karakurt от Декабря 12, 2018, 19:24
Что сейчас актуально для изучения?
Название: Языки программирования
Отправлено: Bhudh от Декабря 12, 2018, 19:40
Смотря для какой цели.
Для написания прикладного софта в основном форсятся Go(lang), C# новых серий, для iOS — Swift.
Менее: Rust, Python.
Для Web само собой JS, для бэка Ruby (on Rails), фреймворки на PHP и Python.
Название: Языки программирования
Отправлено: Karakurt от Декабря 12, 2018, 20:22
А джава?
Название: Языки программирования
Отправлено: Bhudh от Декабря 12, 2018, 20:29
На Джаве, как я понимаю, в основном поддержка ранее написанного.
Название: Языки программирования
Отправлено: Python от Декабря 12, 2018, 20:31
Для Андроида Джава была актуальна пару лет назад. Сейчас уже нет?..
Название: Языки программирования
Отправлено: Bhudh от Декабря 12, 2018, 20:41
:donno: Она и для Symbian была актуальна.
По традиции для смартов на ней пишут?
Просто после появления той штуки, которая из пачки js и html файлов делает аппликуху под Андроид, на серьёзных языках делаются только по-настоящему серьёзные программы.
Название: Языки программирования
Отправлено: Python от Декабря 12, 2018, 21:01
Просто после появления той штуки, которая из пачки js и html файлов делает аппликуху под Андроид, на серьёзных языках делаются только по-настоящему серьёзные программы.
Такие штуки и лет 10 назад существовали. Просто действительно ли они дают преимущества? Если у нас есть сайт, его нужно быстренько переделать в андроид-приложение — тогда да, писать с нуля на серьезном языке бессмысленно. А если это, например, игра в «дополненной реальности», работающая с видеокамерой, акселерометром и GPS, то я не очень представляю, как на html+js делается такое.

Еще слышал мнение одного андроид-программиста, что позиционирование объектов в html/css реализовано хуже, чем в собственно андроиде. Впрочем, вопрос вкуса и привычки.
Название: Языки программирования
Отправлено: Python от Декабря 12, 2018, 21:03
Цитировать
для бэка Ruby (on Rails)
Уже снова актуально? Просто, мне показалось, перед этим наблюдался спад спроса на Ruby.
Название: Языки программирования
Отправлено: Bhudh от Декабря 12, 2018, 21:03
А если это, например, игра в «дополненной реальности», работающая с видеокамерой, акселерометром и GPS, то
…это уже по-настоящему серьёзная программа.
С доступом напрямую к железу, как положено.
Название: Языки программирования
Отправлено: Lodur от Декабря 13, 2018, 10:51
Цитировать
для бэка Ruby (on Rails)
Уже снова актуально? Просто, мне показалось, перед этим наблюдался спад спроса на Ruby.
Что-то не могу догадаться, что здесь обозначает слово "бэк" (как то не довелось встречать), даже после того, как прочёл, что такое Ruby on Rails, и что на нём создано.
Название: Языки программирования
Отправлено: Karakurt от Декабря 13, 2018, 10:52
Back end?
Название: Языки программирования
Отправлено: Lodur от Декабря 13, 2018, 10:56
Back end?
Спасибо.

( :fp: <-- выдал себе награду за "догадливость")
Название: Языки программирования
Отправлено: Bhudh от Декабря 13, 2018, 16:43
Уже снова актуально?
Цитата: https://weblog.rubyonrails.org/news
As you may know, the release of Ruby 2.6.0 is right around the corner!
Для кого-то ж выпускают…
Название: Языки программирования
Отправлено: Upliner от Декабря 13, 2018, 17:08
Дополненная реальность на js уже существует
https://www.auduno.com/clmtrackr/examples/facesubstitution.html
(Чтобы посмотреть, нужна вебка)
Название: Языки программирования
Отправлено: Pigra_kojoto от Января 8, 2019, 21:26
В детстве изучал Паскаль. Забыл за ненадобностью. Знаю C. Неплохо знаю PHP и чуток Kotlin. Недавно выучил Python, тяжело даётся, сложный.
Название: Языки программирования
Отправлено: Python от Января 10, 2019, 02:45
Недавно выучил Python, тяжело даётся, сложный.
Что именно в нём Вам показалось сложным?
(Долгое время мне он казался слишком простым, чтобы его учить)
Название: Языки программирования
Отправлено: Pigra_kojoto от Января 10, 2019, 08:45
Недавно выучил Python, тяжело даётся, сложный.
Что именно в нём Вам показалось сложным?
(Долгое время мне он казался слишком простым, чтобы его учить)
У него сильно отличающийся синтаксис от C, посему чтобы на нем начать писать, его надо было заново учить как бы "с нуля".
Название: Языки программирования
Отправлено: Python от Января 10, 2019, 16:39
Сильно? Вы еще LISP и APL не видели. ))
Идея синтаксически маркировать блоки отступами оригинальна, конечно, но что в ней такого, чего не делает правильно воспитанный программист на том же C?
Хотя, например, операции и их приоритет, в основном, такие же, как в C-подобных языках — в этом плане, python более C-подобен, чем тот же pascal.
Название: Языки программирования
Отправлено: Timiriliyev от Января 30, 2019, 10:44
1. Какие языки программирования вы изучали?
Если по-настоящему изучил, то есть тот язык, с которым более-менее спокойно себя чувствую, то наверное только Си, но всё равно постоянно спотыкаюсь о сегфолты и непонятные конструкции, написанные каким-нибудь умником.
Если изучал, то какое-то мелкое подмножество C++, когда-то пришлось потрогать JavaScript и TypeScript, совсем немного Python и уже забытый C#. Ну и Unix Shell и AWK заинтересовали в последнее время.

2. Какой из них вы предпочитаете использовать?
Тот, на котором написан проект. Как правило C или C++.
Название: Языки программирования
Отправлено: maratique от Июля 20, 2021, 15:28
Я считал себя умным человеком, пока не начал изучать Scheme. А конкретно Guile (хорошая вещь, советую). Сколько ни бился, так и полностью не разобрался в continuation'ах. Это же надо так плохо объяснять! Проще дизассемблировать компилятор и самому понять, что это такое, чем по их объяснениям.
Название: Языки программирования
Отправлено: Python от Июля 20, 2021, 15:44
В упрощенном варианте, continuation можно использовать как многоуровневый выход из функции (примерно как exception) — в некоторых реализациях (например, kawa) они могут только это. Более сложные выкрутасы с возвратами обратно в функцию, из которой был осуществлен выход, сложнее для понимания сами по себе.
Название: Языки программирования
Отправлено: maratique от Июля 21, 2021, 15:08
Говорят, самым естественным является порядок слов SOV. Поэтому такой "тюркский" язык программирования был бы удобен, естествененен и компактен. Есть PL Factor, но он слишком мудреный. Хочу тюркский язык такой же простой как Fortran 77.

Естественно в нём должна быть RPN, и ключевые слова на яңалифе.

Пример нахождения среднего арифметического двух введёных чисел:

a b oku  #считываем числа
orta = a b + 2 /
orta jaz #вывод


Название: Языки программирования
Отправлено: Andrey Lukyanov от Июля 21, 2021, 18:00
orta = a b + 2 /

(wiki/ru) Обратная_польская_запись (https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C)
Название: Языки программирования
Отправлено: Bhudh от Июля 21, 2021, 18:17
RPN
Это Reverse Polish notation.
Название: Языки программирования
Отправлено: maratique от Июля 21, 2021, 19:05
RPN она сама по себе тюркская. Точнее алтайская.
Название: Языки программирования
Отправлено: maratique от Июля 21, 2021, 19:11
Надо чтоб в языке обращения к массивам не отличались бы от вызова функций:

a = (1, -7.93, "hggjg", x)
1 a jaz   #выводит -7.93


Как бы 1'ci a'nı jaz
Название: Языки программирования
Отправлено: maratique от Июля 21, 2021, 19:25
Так будет понятнее:

jaş = Lejla:23, Ajgül:59, Hasan:17, Ivan:6
Hasan jaş jaz   #выводит 17


Типа Hasannıñ jaşın jaz
 
Название: Языки программирования
Отправлено: злой от Августа 26, 2021, 18:35
Надо чтоб в языке обращения к массивам не отличались бы от вызова функций:

a = (1, -7.93, "hggjg", x)
1 a jaz   #выводит -7.93


Как бы 1'ci a'nı jaz


Forth покурите. Там что-то, на первый взгляд, близкое по идее.
Название: Языки программирования
Отправлено: maratique от Августа 27, 2021, 07:45
Если ввести правило, что идентификаторы либо состоят из одной строчной буквы, либо начинаются и кончаются на заглавную, то пробелы будут не нужны, вроде:

a1 2 3 4;           # ";" — это оператор присваивания
k1;
qka>>k++k5<?q;      # цикл = рекурсивной функции
q


Что эквивалентно

a={1,2,3,4}
for k=1,4 do print(a[k])end

Знаете какой-нибудь такой же минималистичный упоротый язык? А то я бы его изучил вместо того, чтобы свой транслятор делать.
Название: Языки программирования
Отправлено: злой от Августа 27, 2021, 09:16
Это в сторону всяких brainfuck'ов.
Название: Языки программирования
Отправлено: kemerover от Августа 27, 2021, 09:25
Говорят, самым естественным является порядок слов SOV.
Кто говорит? Турки и японцы?
Название: Языки программирования
Отправлено: maratique от Августа 27, 2021, 09:40
Это в сторону всяких brainfuck'ов.
Brainfuck наоборот длинный. А мне надо без лишней писанины. А то все существующие языки убогие.
Цитировать
Кто говорит? Турки и японцы?
SOV   "She him loves."   45%   
SVO   "She loves him."   42%   
VSO   "Loves she him."   9%   
VOS   "Loves him she."   3%   
OVS   "Him loves she."   1%   
OSV   "Him she loves."   0%
      Warao
Название: Языки программирования
Отправлено: злой от Августа 27, 2021, 12:21
Там в пределах статистической погрешности разница. Вот то, что номинативный строй победил эргативный, можно констатировать.
Название: Языки программирования
Отправлено: kemerover от Августа 27, 2021, 14:01
SOV   "She him loves."   45%   
SVO   "She loves him."   42%   
VSO   "Loves she him."   9%   
VOS   "Loves him she."   3%   
OVS   "Him loves she."   1%   
OSV   "Him she loves."   0%
      Warao
Это говорит только против вашего утверждения. Если SOV очевидно самый удобный, откуда 55% языков с другим строем?
Название: Языки программирования
Отправлено: maratique от Августа 27, 2021, 14:04
qka>>k++k5<?q; можно упростить до
qka>>k5+<q; можно упростить до
ka>>k5+<:

Короче можно for k=1,4 do print(a[k]) end записать в виде
0k4+<ka>>:
— никакой лишней писанины. Вот это я понимаю язык
Название: Языки программирования
Отправлено: kemerover от Августа 27, 2021, 14:12
Там в пределах статистической погрешности разница. Вот то, что номинативный строй победил эргативный, можно констатировать.
А разве у них когда-то была борьба?
Название: Языки программирования
Отправлено: Bhudh от Августа 27, 2021, 18:07
Вот то, что номинативный строй победил эргативный, можно констатировать.
Это SVO или OVS?
Название: Языки программирования
Отправлено: злой от Августа 27, 2021, 18:17
Вот то, что номинативный строй победил эргативный, можно констатировать.
Это SVO или OVS?


Я так понял, это как тёплое и сладкое. Эргативный способ обозначения агенса и пациента, в теории, мог бы сочетаться с любым порядком слов. Как на практике, не знаю, врать не буду.
Название: Языки программирования
Отправлено: злой от Августа 27, 2021, 18:19
Там в пределах статистической погрешности разница. Вот то, что номинативный строй победил эргативный, можно констатировать.
А разве у них когда-то была борьба?

Если в процентах сравнивать. Хотя вот хинди, если мне не изменяет память, приобрёл какие-то черты эргативного языка, в то время как древнеиндийский язык, из которого он произошёл, был номинативным. Так что какие-то процессы идут.
Название: Языки программирования
Отправлено: Bhudh от Августа 27, 2021, 19:03
Я так понял, это как тёплое и сладкое.
Я про порядок в самой цитате спросил.
Название: Языки программирования
Отправлено: rupol2000 от Августа 27, 2021, 21:35
Как сделать нечто подобное в языке типа JS, где yield/сопрограммы/континуации или другие подобные средства отсутствуют — только return?
В JS кажется есть yield.
Я как то сталкивался с этими продолжениями в scheme, оттуда они собственно и пришли, мне не понравилось и я до конца их так и не понял. На самом деле их даже запаренные лисперы не используют, о них только чесать языком все горазды.
Их трудно понять, потому что там происходят неявные манипуляции со стеком, а не потому что они какие то там сверхумные.
Люди обычно плохо понимают даже обычные замыкания, потому что там под ковром создаются окружения, которые программисту недоступны. Все это из разряда как сделать из простого уродливо-сложное и представлять потом публике недостатки как достоинства.
Это была идея Сассмана, когда он украл у Карла Хьюитта идею языка Планнер и сделал мини-форк. Сделал он это исключительно из соображений производительности, это был суррогат бектрекинга, потом как водится, функциональщики приписали ему разные волшебные свойства.
Название: Языки программирования
Отправлено: rupol2000 от Августа 27, 2021, 21:37
Притом сам Хьюитт не оценил идею
Название: Языки программирования
Отправлено: rupol2000 от Августа 27, 2021, 21:40
И кстати для Питона они должны быть слишком дорогими по памяти, потому что он не оптимизирует хвостовую рекурсию, в отличие от scheme
Название: Языки программирования
Отправлено: злой от Августа 28, 2021, 10:26
Я так понял, это как тёплое и сладкое.
Я про порядок в самой цитате спросил.

А, теперь понятно. Это SVO. Аналогичные языковые казусы встречаются, когда рассказывают как одна компания с несклоняемым буржуйским названием купила другую такую же буржуйскую компанию.
Название: Языки программирования
Отправлено: Bhudh от Августа 28, 2021, 14:36
Вот поэтому пассив пока и не умрёт. «XXX была куплена YYY».
Правда, с «XXX была продана YYY» уже будут проблемы, хоть и другого рода.
Название: Языки программирования
Отправлено: maratique от Сентября 7, 2021, 18:45
Оказывается, в последнее время стали появляться такие вот ЯПы без лишней писанины — так называемые golfing languages. А сам процесс написания чрезвычайно лаконичного кода называется code golf(ing).

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

Лучшее, что я нашел — это язык программирования CJAM: http://cjam.aditsu.net/ — он реально рабочий, на нем можно писать консольки. Но в нем есть явные недостатки:

А так в целом отлично. Особенно удобно писать функции — не нужны формальные параметры, ибо ты уже знаешь, что они на стеке. Например, функция, суммирующая два своих аргумента будет выглядеть просто
0$2$+

В этом языке пробелы нужны разве что между числами. И поэтому там невозможны произвольные многобуквенные имена переменных и функций. А если сделать такой синтаксис, чтобы доступ к полю массива был как вызов функции, то возможен любой идентификатор — просто введем таблицу L для библиотечных сторонних функций, и таблицу l для своих локальных нужд:

'BesselJ''math'L — функция BesselJ из библиотеки math
'sum_of_squares'l — пользовательская переменная sum_of_squares

Во-первых, буква l — первая буква слова library - библиотека, а во-вторых, из-за сходства с цифрой 1 она редко используется как идентификатор.
Название: Языки программирования
Отправлено: kemerover от Сентября 7, 2021, 19:34
Оказывается, в последнее время стали появляться такие вот ЯПы без лишней писанины — так называемые golfing languages. А сам процесс написания чрезвычайно лаконичного кода называется code golf(ing).
Вроде как код-гольфинг был популярен лет 7 назад, сейчас как-то меньше о нём слышно.
Название: Языки программирования
Отправлено: maratique от Сентября 7, 2021, 19:47
Оказывается, в последнее время стали появляться такие вот ЯПы без лишней писанины — так называемые golfing languages. А сам процесс написания чрезвычайно лаконичного кода называется code golf(ing).
Вроде как код-гольфинг был популярен лет 7 назад, сейчас как-то меньше о нём слышно.
Так и ничего полноценного не создали. Забрасывали на полдороге.
Название: Языки программирования
Отправлено: злой от Сентября 7, 2021, 19:48
Оказывается, в последнее время стали появляться такие вот ЯПы без лишней писанины — так называемые golfing languages. А сам процесс написания чрезвычайно лаконичного кода называется code golf(ing).
Вроде как код-гольфинг был популярен лет 7 назад, сейчас как-то меньше о нём слышно.

Это прикольно до того момента, когда тебе приходится читать ранее написанную программу. Как говорят, машина поймёт любую программу, у которой правильный синтаксис, писать программы нужно так, чтобы их в состоянии был понять человек. Вдобавок, там где серьёзная разработка, нередко применяют кросс-чек, другой человек вычитывает твою программу. Одним словом, писать программу нужно так, чтобы её можно было читать.
Название: Языки программирования
Отправлено: kemerover от Сентября 7, 2021, 19:49
Так и ничего полноценного не создали. Забрасывали на полдороге.
Так эти языки предназначены, чтобы решать «олимпиадные» задачи, а это весьма специфичная сфера, там полноценные языки и не нужны.
Название: Языки программирования
Отправлено: maratique от Сентября 7, 2021, 20:56
Насчет того, что такие языки трудновоспринимаемы — так это спорно. Там просто в примерах, возможно, сама идея решения очень экономная и нетривиальная. А если решать по-простому, то ничем не хуже обычных языков. Если я например напишу цикл алгоритма Флойда-Уоршелла на Си и на абстрактном гольф-языке, то чем сложнее-то?

for (int k = 0; k < 26; k++)
      for (int i = 0; i < 26; i++)
        for (int j = 0; j < 26; j++)
          b[i ][j] = min(b[i ][j], b[i ][k] + b[k][j]);



fk26
  fi26
    fj26
      ijb ijb ikbkjb+ min;
Название: Языки программирования
Отправлено: Bhudh от Сентября 7, 2021, 21:15
Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Название: Языки программирования
Отправлено: yurifromspb от Сентября 7, 2021, 21:20
Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Lisp  :yes:
Брат-антиблизнец форта, в каком-то смысле.
Название: Языки программирования
Отправлено: Bhudh от Сентября 7, 2021, 21:21
Этот вообще ни в одну категорию не лезет. Нет у него ни функций, ни массивов, одни кортежи…
Название: Языки программирования
Отправлено: Andrey Lukyanov от Сентября 7, 2021, 21:25
Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Фортран, Кобол, ПЛ/1...
Название: Языки программирования
Отправлено: yurifromspb от Сентября 7, 2021, 21:25
Этот вообще ни в одну категорию не лезет. Нет у него ни функций, ни массивов, одни кортежи…
Ну, всяких изводов много, внутри можно сделать что угодно. В Racket массивы есть.
Название: Языки программирования
Отправлено: Bhudh от Сентября 7, 2021, 21:31
Кобол
А что Вы называете массивами в Коболе? :???
Название: Языки программирования
Отправлено: yurifromspb от Сентября 7, 2021, 21:34
Хаскелл, кстати.
Название: Языки программирования
Отправлено: Andrey Lukyanov от Сентября 7, 2021, 21:54
Кобол
А что Вы называете массивами в Коболе? :???
Там они определяются конструкциями типа
Цитировать
01 WEEK-TABLE.
      05 DAY-NAME OCCURS 7 TIMES PIC X(9) .
Но функции, как оказалось, там вызываются по-другому, так что Кобол вычёркиваем.
Название: Языки программирования
Отправлено: maratique от Сентября 7, 2021, 21:58
Это вообще тупо, что в функциях и массивах используются разные виды скобок. Ладно еще, если бы можно было иметь одноименные массив и функцию. Но нет, нельзя в Си.

А ведь массив — это просто целочисленная функция и все. Например, следующие равносильны:

int f={1,2,3}

int f(int i){
  switch(i){
  case 0:return 1;
  case 1:return 2;
  case 2:return 3;
  }
}


А квадратные скобки можно было как-нибудь поумнее применить
Название: Языки программирования
Отправлено: Andrey Lukyanov от Сентября 7, 2021, 22:08
Это вообще тупо, что в функциях и массивах используются разные виды скобок. Ладно еще, если бы можно было иметь одноименные массив и функцию. Но нет, нельзя в Си.
Я думаю, что разные типы скобок () [] {} используются исключительно для удобства программиста, чтобы сразу было понятно, где что.
Название: Языки программирования
Отправлено: maratique от Сентября 7, 2021, 22:15
Цитировать
Я думаю, что разные типы скобок () [] {} используются исключительно для удобства программиста, чтобы сразу было понятно, где что.
Но это расточительно.

Более того, если запретить вложенные конструкции, то необязательно иметь парные скобки, можно иметь одинарные разграничители —  / или \ или | или кавычки.
А так как в Си при инициализации массива надо писать запятые, то можно и вложенные:

int matrix[][] = ||1,2,3|,|4,5,6|,|7,8,9||
Название: Языки программирования
Отправлено: Bhudh от Сентября 7, 2021, 23:06
Можно проще: int matrix[3][3] = 1,2,3,4,5,6,7,8,9;.
Название: Языки программирования
Отправлено: Python от Сентября 8, 2021, 01:59
А мне надо без лишней писанины. А то все существующие языки убогие.
Знаете какой-нибудь такой же минималистичный упоротый язык?
Кажется, Вы созрели для APL (https://en.wikipedia.org/wiki/APL_(programming_language)). При условии, что не боитесь языков с экзотической письменностью. Если боитесь — наверно, лучше что-то из APL-производных с обычным ascii-набором символов, напр., J. (https://en.wikipedia.org/wiki/J_(programming_language))
Название: Языки программирования
Отправлено: Python от Сентября 8, 2021, 02:10
Можно проще: int matrix[3][3] = 1,2,3,4,5,6,7,8,9;.
matrix←3 3⍴⍳9
Название: Языки программирования
Отправлено: Yougi от Сентября 8, 2021, 11:21
 А чем вообще языки программирования отличаются?
 Мне, как человеку, покалеченному в юности ассемблером ( да и сейчас его практикующим время от времени ), ЯВУ кажутся братьями-близнецами, различающимися исключительно рукожопостью их авторов.
 Ну есть Ц; прикрутили к нему классы, стал ЦПП; были до этого Паскаль и Басик - всё ж одно и тоже ( это я про процедурные языки ). А "мастерство" программиста заключается в знании конкретных глюков реализации компилятора и ключей командной строки... Ну, мне так кажется.
 
Название: Языки программирования
Отправлено: _Swetlana от Сентября 8, 2021, 11:50
А чем вообще языки программирования отличаются?
С точки зрения теории алгоритмов - математической моделью алгоритма.
3 варианта: ДМТ, частично-рекурсивная функция и исчисление предикатов.
Название: Языки программирования
Отправлено: maratique от Сентября 8, 2021, 12:20
ЯПы отличаются смыслом вот этих 33-х товарищей:
32   
33   !
34   "
35   #
36   $
37   %
38   &
39   '
40   (
41   )
42   *
43   +
44   ,
45   -
46   .
47   /
58   :
59   ;
60   <
61   =
62   >
63   ?
64   @
91   [
92   \
93   ]
94   ^
95   _
96   `
123   {
124   |
125   }
126   ~
 

Цитировать
ЯВУ кажутся братьями-близнецами, различающимися исключительно рукожопостью их авторов.
Иногда создается очучение, что это какой-то заговор. Для себя и близких у них годные языки, а если что-то распиарить, то только избыточное и неочевидное гавно.
Название: Языки программирования
Отправлено: Bhudh от Сентября 8, 2021, 14:45
Для себя и близких у них годные языки, а если что-то распиарить, то только избыточное и неочевидное гавно.

А если "для себя и близких" вообще ничего нет,
то все существующие языки убогие
:yes: Это не заговор, это психология. К чему привык, то и нравится.
Название: Языки программирования
Отправлено: злой от Сентября 8, 2021, 19:59
А чем вообще языки программирования отличаются?
 Мне, как человеку, покалеченному в юности ассемблером ( да и сейчас его практикующим время от времени ), ЯВУ кажутся братьями-близнецами, различающимися исключительно рукожопостью их авторов.
 Ну есть Ц; прикрутили к нему классы, стал ЦПП; были до этого Паскаль и Басик - всё ж одно и тоже ( это я про процедурные языки ). А "мастерство" программиста заключается в знании конкретных глюков реализации компилятора и ключей командной строки... Ну, мне так кажется.
 

На мой взгляд, есть три разных типа языков программирования:
1. Все вот эти Си, Фортраны, JS-ы, Питоны и прочие;
2. Лямбда (Лисп и прочие);
3. Похожие на то, что выдаёт интерпретатор (Форт и т.п.)

Ну есть ещё собственно ассемблер. Мне в своё время довелось поработать с ассемблером MIPS'а. RISC-архитектура, все команды занимают один такт, только скачки - два такта. Big endian, численные значения читаются невооружённым глазом. После MIPS'а ассемблер IA-32 - это боль. Возможно поэтому ничего большего, чем пару простеньких поделий я на последнем не создал.