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

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

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

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

злой

Цитата: kemerover от сентября  7, 2021, 19:34
Цитата: maratique от сентября  7, 2021, 18:45
Оказывается, в последнее время стали появляться такие вот ЯПы без лишней писанины — так называемые golfing languages. А сам процесс написания чрезвычайно лаконичного кода называется code golf(ing).
Вроде как код-гольфинг был популярен лет 7 назад, сейчас как-то меньше о нём слышно.

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

kemerover

Цитата: maratique от сентября  7, 2021, 19:47
Так и ничего полноценного не создали. Забрасывали на полдороге.
Так эти языки предназначены, чтобы решать «олимпиадные» задачи, а это весьма специфичная сфера, там полноценные языки и не нужны.

maratique

Насчет того, что такие языки трудновоспринимаемы — так это спорно. Там просто в примерах, возможно, сама идея решения очень экономная и нетривиальная. А если решать по-простому, то ничем не хуже обычных языков. Если я например напишу цикл алгоритма Флойда-Уоршелла на Си и на абстрактном гольф-языке, то чем сложнее-то?

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;
Memento mori
普京回罗

Bhudh

Цитата: maratique от сентября  7, 2021, 18:45Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

yurifromspb

Цитата: Bhudh от сентября  7, 2021, 21:15
Цитата: maratique от сентября  7, 2021, 18:45Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Lisp  :yes:
Брат-антиблизнец форта, в каком-то смысле.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

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

Bhudh

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

Andrey Lukyanov

Цитата: Bhudh от сентября  7, 2021, 21:15
Цитата: maratique от сентября  7, 2021, 18:45Доступ к элементу массива и вызов функции имеют разный формат.
Так это в большинстве языков так. Я даже и не вспомню, в каких он одинаковый.
Фортран, Кобол, ПЛ/1...

yurifromspb

Цитата: Bhudh от сентября  7, 2021, 21:21
Этот вообще ни в одну категорию не лезет. Нет у него ни функций, ни массивов, одни кортежи...
Ну, всяких изводов много, внутри можно сделать что угодно. В Racket массивы есть.
Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

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

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

yurifromspb

Дяденька, я ведь не настоящий лингвист, а этимологический словарь я в интернете нашёл.

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

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

Andrey Lukyanov

Цитата: Bhudh от сентября  7, 2021, 21:31
Цитата: Andrey Lukyanov от сентября  7, 2021, 21:25Кобол
А что Вы называете массивами в Коболе? :???
Там они определяются конструкциями типа
Цитировать
01 WEEK-TABLE.
      05 DAY-NAME OCCURS 7 TIMES PIC X(9) .
Но функции, как оказалось, там вызываются по-другому, так что Кобол вычёркиваем.

maratique

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

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

int f={1,2,3}

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


А квадратные скобки можно было как-нибудь поумнее применить
Memento mori
普京回罗

Andrey Lukyanov

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

maratique

ЦитироватьЯ думаю, что разные типы скобок () [] {} используются исключительно для удобства программиста, чтобы сразу было понятно, где что.
Но это расточительно.

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

int matrix[][] = ||1,2,3|,|4,5,6|,|7,8,9||
Memento mori
普京回罗

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: maratique от августа 27, 2021, 09:40
А мне надо без лишней писанины. А то все существующие языки убогие.
Цитата: maratique от августа 27, 2021, 07:45
Знаете какой-нибудь такой же минималистичный упоротый язык?
Кажется, Вы созрели для APL. При условии, что не боитесь языков с экзотической письменностью. Если боитесь — наверно, лучше что-то из APL-производных с обычным ascii-набором символов, напр., J.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Python

Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Yougi

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

_Swetlana

Цитата: Yougi от сентября  8, 2021, 11:21
А чем вообще языки программирования отличаются?
С точки зрения теории алгоритмов - математической моделью алгоритма.
3 варианта: ДМТ, частично-рекурсивная функция и исчисление предикатов.
🐇

maratique

ЯПы отличаются смыслом вот этих 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   ~

ЦитироватьЯВУ кажутся братьями-близнецами, различающимися исключительно рукожопостью их авторов.
Иногда создается очучение, что это какой-то заговор. Для себя и близких у них годные языки, а если что-то распиарить, то только избыточное и неочевидное гавно.
Memento mori
普京回罗

Bhudh

Цитата: maratique от сентября  8, 2021, 12:20Для себя и близких у них годные языки, а если что-то распиарить, то только избыточное и неочевидное гавно.

А если "для себя и близких" вообще ничего нет,
Цитата: maratique от августа 27, 2021, 09:40то все существующие языки убогие
:yes: Это не заговор, это психология. К чему привык, то и нравится.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

злой

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


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

Ну есть ещё собственно ассемблер. Мне в своё время довелось поработать с ассемблером MIPS'а. RISC-архитектура, все команды занимают один такт, только скачки - два такта. Big endian, численные значения читаются невооружённым глазом. После MIPS'а ассемблер IA-32 - это боль. Возможно поэтому ничего большего, чем пару простеньких поделий я на последнем не создал.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

maratique

А есть, интересно, ЯПы, в которых оператор выбора switch case выполнен в виде массива кодов? Например:
вместо
switch(n)
{
case 1: n++;break;
case 2: n+=2;break;
case 3: n+=3;break;
}

просто:
{n++,n+=2,n+=3}[n] — то есть тупо n-ый код из массива

Так и if else не нужен — просто условимся, что true = 1, false = 2 и вместо
if(condition)op1;else op2;
пишем просто{op1, op2}[condition]
Memento mori
普京回罗

Bhudh

В JavaScript это позволяет просто синтаксис массивов и тот факт, что там функции суть граждане 1-го класса.
[n => ++n, n => n += 2,n => n += 3][n]();
[op1, op2][+condition]()
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: Bhudh от ноября 10, 2021, 14:09
В JavaScript это позволяет просто синтаксис массивов и тот факт, что там функции суть граждане 1-го класса.
[n => ++n, n => n += 2,n => n += 3][n]();
[op1, op2][+condition]()

Зачем здесь изменяющие операторы в лямбдах, если параметры-числа передаются по значению?
(Вернее, по ссылке на объект, но поскольку объект-число все равно immutable, изменение значения формального параметра никак не отражается на фактическом параметре).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

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

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

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

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

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