LINUX.ORG.RU
ФорумTalks

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

 , ,


0

2

Привет, друзья!

У меня Python основной язык для работы и развлечения. К его синтаксису давно привык, мне он нравится. Но не считаю его идеальным. Сразу не приведу примеры, но время от времени какие-то конструкции вызывают раздражение.

Здесь на форуме нередко ругаются на синтаксис C. Я также когда-то изучил его основы, так, чтобы достаточно было читать исходники, если придётся. Иногда приходится разбирать, как работает плохо документированный опенсорсный софт. Но и о C я не могу сказать, что он прям вырвиглазный. Привыкнуть можно.

На днях пришлось разобраться с синтаксисом Objective-C, чтобы кое-что поправить в используемой программе. Вот это настоящее Г..о, придуманное из ненависти к человечеству! До сих пор тошнит.

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

А какой язык Вы считаете в части синтаксиса самым приятным, продуманным, логичным, лёгким для чтения и восприятия?

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

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

В его названии заложена такая идея: Beginner’s All-purpose Symbolic Instruction Code. Но нет.

rmu ★★
() автор топика

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

Сложно сказать. Мозг адаптируется ко всему. Почти все альтернативы хороши. Даже машинно-дружелюбный лисп норм.

kaldeon
()

А какой язык Вы считаете в части синтаксиса самым приятным, продуманным, логичным, лёгким для чтения и восприятия?

Да все так или иначе не идеальные.

Из тех, которыми реально пользуюсь, вспоминаются Lua и Ruby.

У многих Си-подобных синтаксис так или иначе терпимый, хоть и кривой. Си, Си++, JS, Java, C#. Всё это «боевые» инструменты.

wandrien ★★
()

Думаю, можно опрос составить на основе того, какие варианты будут предложены.

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

Мозг адаптируется ко всему.

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

Zeta_Gundam
()

приятным и понятным

Все приятно-понятные – наследники Algol-60.
Из прошлых – Zonnon ©.
Из нынешних – Crystal ©.
Из будущих – русский язык + «нейросетка» :)

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

Я не думаю, что между автоматизацией корявого shell-like синтаксиса и, скажем, чистенького ruby, есть значительная разница.

Полное освобождение только у тех, кто не пишет код, а делает архитектуру.

kaldeon
()

Мне C# нравится синтаксисом и кучей синтаксического сахара, которой он весь обмазан.

Loki13 ★★★★★
()

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

  • Си, красивый и лаконичный и гибкий синтаксис
#include <stdio.h>
int ifs(int exp)
{
    return exp;
}
int main()
{
    ifs(10 > 20) ?
       printf("Yes!\n")
       :
       printf("Nop!\n");
    return 0;
}
  • Lua, замечательный и чудовищно гибкий синтаксис
local function ifs(con)
    return function(exp)
      if con == true and exp and exp[1] then
         exp[1]()
      end
      return function(el)
         if con == false and el and el[1] then
            return el[1]()
         end
      end
    end
end

ifs(10 > 20)
{
    function()
        print("Yes!")
    end
} {
    function()
        print("Nop!")
    end
}

Лично я вот умею только не читаемую лапшу генерировать на любом языке проигрывания :o)

LINUX-ORG-RU ★★★★★
()

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

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

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


function  v(...)
    local v = setmetatable({...},{
        __call = function(self)
            for k,v in ipairs(self) do
                io.write(v,' ')
            end
            io.write('\n')
            return self
        end;
        __add = function(a,b)
            local out = {}
            for i=1,math.max(#a,#b) do
               out[#out+1] = (a[i] or 0) + (b[i] or 0)
            end
            return setmetatable(out,getmetatable(a))
        end
    })
    return v
end

(v(1,2,3,4) + v(2,2,2,2))()

local x = v(1,2,3,4,5,6)
local y = v(1,2,3)
local z = x + y
z()

local p = v(7,7,7)()
p = p + p
p()

Ещё немножко и GLSL получится.

LINUX-ORG-RU ★★★★★
()

Узнал тут, что в Elixir есть такой синтаксический сахар:

f1(a) |> f2(b) |> f3(c)

то же самое, что:

f3(f2(f1(a), b), c)

Я теперь фанат этой фичи и хочу её везде.

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

Я не пробовал, да там наверное всё что только можно и нельзя уже написано, только под себя подбирай

В поисковике поискал

На любой вкус и цвет походу :)

LINUX-ORG-RU ★★★★★
()

Но не считаю его идеальным.

Идеального языка нету, прикинь?

Натуральнее питона будет только Scratch. Ну попробуй Go штоле.

Есть ещё предложение продолжать сидеть на питоне, так как снаружи будет только разочарование.

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

Причем этот сахар реализован средствами самого ЯП (макросами), а не запилен в компайлер.

Подобный оператор вроде ещё есть в F# и кложе.

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

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

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

Стандартная библиотека и большинство сторонних либ пишутся так, чтобы чаще всего порядок аргументов был такой, какой нужен. Если же нужно передать в пайп значение не первым аргументом, можно использовать then/2, ну либо вызывать функцию как обычно.

theNamelessOne ★★★★★
()

Go, Lua, Vlang(кстати рекомендую на него обратить внимание - язык хоть ещё развивается, но достаточно удобным получился. Я им для себя луашку заменил, ибо по сложности кода получается +- одинаково, но при этом язык очень легко скрещивается с сишкой ввиду того, что в сишку в качестве промежуточного представления он и компилируется. Синтаксис у него на 85% гошный).

Есть конечно нюансы, но всё же. В целом вопрос как по мне некорректный, т.к. сложность/простота языка штука очень относительная, т.к. очень часто можно использовать подмножество языка и бед с пониманием кода не знать, но часто это приводит к тому, что какие-то сложные вещи сами по себе порождают ухабистый код, который вроде выглядит просто, но логика в нём становится нетривиальной. Собственно поэтому в языки и добавляют новые фишки и синтаксические конструкции, дабы ценой усложнения языка было короче и проще(по крайней мере по задумке авторов языка) выражать логические конструкции. Ввиду чего правильнее задавать вопрос не о языке, а об идиоматических практиках написания кода на языке - их уже логичнее сравнивать, но и то всё равно мы утыкаемся в прикладную область языка, ибо дальше вопрос сложности будет плясать от неё, ибо многие ругают C++ за сложность, но будь он проще, то многие вещи языка общего назначения в нём бы работали хуже или вовсе были нереально трудными для реализации, так например - нет сборщика мусора ? - получаешь управляемую песочницу по работе с памятью с нулевыми базовыми накладными расходами среды исполнения, пугают сложные шаблоны ? - без них будешь писать N реализаций однотипных алгоритмов для каждого типа.

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

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Причем этот сахар реализован средствами самого ЯП (макросами), а не запилен в компайлер.

Интересно. До макросов я вчера их доки недочитал, уснул на полпути. Пойду дочитаю)

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

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

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

Кстати не знаю ради фарма клоунов вы упомянули Паскаль, но вообще рекомендую тем, у кого устарели знания паскаля посмотреть на PascalABC - разрабы напихали в язык столько сахара, что вполне достойный язык получился, ему бы платформу с .net на llvm с максимально простым связыванием и обёртыванием сишки, так вообще вполне клёвый язык бы вышел, по сути эдакая компилируемая луашка на стероидах.

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 1)

Go

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

ergo ★★★
()

Си лично мне не нравится отсутсвием неймспейсов, жуткие префиксы и костыли из макросов которые генерируют именования в компайлтайм.

Rust - там уже напридумали кучу паттернов которые призваны решить проблему времени жизни объектов. А когда растовикам надоедает они просто копируют объекты.

Python - __init__.py, мда self.синтаксис __очень self.удобный.

Aber ★★★★★
()

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

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

Так вот только в питоне видел, чтобы популярные либы так сильно запаривались над вопросом «как сконструировать API, чтобы код его использующий не просто работал, но и выглядел лаконично».

Там в стандартной либе полный бардак в этом вопросе.

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

Go

Golang IMHO прекрасен всем (портабельность, лайтовость бинарных сборок, безопасность и многое другое) кроме синтаксиса :)

sanyo1234
()

Внезапно R если не пытаться из него делать паровоз

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

слышал хвалебные оды про TypeScript, но сам не пробовал.

Жабу или сишарп видел? Примерно то же самое по синтаксису.

Nervous ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)