LINUX.ORG.RU
ФорумTalks

Осторожно! 5 голодных советских коров находятся в саду...

 , ,


1

3

...прочитал я в статье «Панграмма» на вики, что навело меня на достаточно очевидную мысль: а существуют ли «панграммы» для языков программирования? То есть, такие минималистичные исходники, демонстрирующие все возможности, весь основной синтаксис (библиотеки, даже стандартные, конечно, не в счёт) для конкретного языка программирования? Желательно, для разных языков программирования. Особенно интересуют баш, современная джава, раст, руби и С++11 и выше.

★★★★★

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

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

Всё в точности наоборот: панграмма затачивается под конкретный естественный язык. Например, заголовок топика - панграмма на ложбане. Для русского языка - это уже не панграмма.

Аналогично и с ЯП, хочу найти «заточенные» каждая под свой язык панграммы.

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

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

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

панграмма затачивается под конкретный естественный язык

для удобства сравнения на ней разных шрифтов.

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

На Rosetta Code есть, по сути, матрица (типичная тривиальная задача / язык). Матрица крайне дырява. Можешь свою затею выразить как-то через нее?

t184256 ★★★★★
()

Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства!

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

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

Лишено смысла. В отличие от естественных языков, где буквы имеют очень ограниченное число сочетаний («слова»), и слова в панграмме должны быть связаны хотя бы минимальным смыслом, в описываемой тобой задаче сочетание ключевых слов может быть произвольным, лишь бы было синтаксически верным. Что, с одной стороны просто и тупо, с другой, не красиво.

Вот, от балды такая панграмма для Lua:

--
--[[ ]]
(function()
    while true do
        local x = false
        if x then
            for x in x do
            end
        elseif nil or not nil then
            break
        else
            repeat
            until x
        end
        return
    end
end)()


Разве это интересно? :)

библиотеки, даже стандартные, конечно, не в счёт

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

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

Разве это интересно? :)

Вполне. Теперь я знаю, что в Lua есть свой foreach, вместо continue используется repeat, а локальные переменные обозначаются как local => могу предположить, что там есть и глобальные переменные. Но только

в описываемой тобой задаче сочетание ключевых слов может быть произвольным

кто вам сказал? Напротив, если только сабжевая программа будет обладать каким-то минимальным смыслом, только тогда её и можно будет назвать панграммой.

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

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

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

вместо continue используется repeat

Вот, уже не так :) repeat — это часть цикла repeat/until, а аналога continue в языке нет :)

а локальные переменные обозначаются как local => могу предположить, что там есть и глобальные переменные

Там всё жестче. Любая переменная, которая не локальная — глобальная :) Простор для утечек памяти…

кто вам сказал? Напротив, если только сабжевая программа будет обладать каким-то минимальным смыслом

Так в приведённой программе смысла нет. И в рамках сохранения синтаксической корректности возможно огромное число перестановок.

Вот если поставить конкретную задачу, например, хотя бы, напечатать числа от 1 до 10… Да и то получится бессмысленно, потому что можно основную часть кода сделать просто невыполняемым, как в моём примере :)

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

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

Думаю, даже вот эта задачка и то в этом плане несёт больше смысла :) —

https://github.com/Balancer/benchmarks-fib-obj

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

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

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

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

и она не показывает (скорее всего) всех возможностей Lua - поэтому на роль панграммы и не годится

Вот если поставить конкретную задачу,
можно основную часть кода сделать просто невыполняемым, как в моём примере :)

а можно и не делать невыполняемым

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

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

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

вы уверены, что здесь продемонстрированы все возможности перл?

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

Так задача все время будет разной? Если да, то это Rosetta Code. Если нет, то не взлетит.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.