LINUX.ORG.RU

Языковый базис


5

3

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

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

Какие языки вы бы предложили?

★★★★

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

Ну не знаю, что там ещё было, я вообще начинал с МК-52. Кстати, многих сегодняшних софтопейсателей хорошо бы за МК-52 посадить года на джва. Пусть увидят, каково это - вмещать серьезный алгоритм в 98 байт и хранить несколько прог в 512 байтах EEPROM. Пусть научатся оптимизации, блджад. А ведь даже игры портировали...

PS. Брат до сих пор жив, кстати, но EEPROM накрылся. Так что теперь пашет в режиме МК-61. :)

border-radius
()
Ответ на: комментарий от qulinxao

Вспомнил, как у нас ради шуток в SHELL лепили то vim, то bc, то sccs, то ещё чего-нибудь этакое. По молодости, по дурости забавно было наблюдать за юзером, впадавшим в ступор от неожиданности. :)

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

в досе nc можно было в качестве командшела - в результате имеем пиш машинку и файловое управление без возможности запуска на исполнение.

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

Где-то лежит тушка БЗ-21. А ещё есть клаводенди, на комплектном картридже которой бейсик. Тоже вытворять можно (если не выключать сутками, что вполне реально, не x86 же :D). Правда, клавиши дубовые донельзя, как будто из фанеры выпилены.

border-radius
()

Программирование... языки... Как в них разобраться...

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

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

Язык - это объект выражения, который должен наследовать ограничение железа. И вся теория поднимается с уровня железа и уровня ЯП.

Одни препратились в макак-машистов-пичатчиков, работников конвейра за еду, вторые ушли в идеальный мир грёз. Зачем нам ограничивать наш полёт фантазии чем-то? Мы творим, и пофиг, что его объект творения ненужное говно и тормазит по определению - нет, мы мой алгоритм на 2операции меньше, чем все. А то их на две меньше, только вот те выполнялись в среднем в 2раза быстрее.

Даже пичально говорить об этом.

otnnte
()

Машину Тюринга/Поста уже советовали?

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

У наших/китайских пираток, насколько я помню, не было. Только LPT-порт был (в более поздних моделях выпилили и его, мне досталась модель уже без него), но в особо редких случаях попадались экземпляры с выходом на магнитофон. А вот у оригинальных фамикомов были и дискеты, и клавы, и 3D-очки с 3.5 играми под них :)

border-radius
()

Метатроллинг просто.
Lisp, конечно же.

Virtuos86 ★★★★★
()

Разложите-ка С++ по базису (С, Python). Может, в этом есть какая-то здравая основа.

Deleted
()

C, Lisp, Python/Ruby, Scala.

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

Я считаю, жаль, что на ЛОРе нельзя модерировать собственные темы %)

По языкам: C/Pascal, CL/Scheme, Java, Smalltalk, ML/Haskell, asm (MIPS, наверное).

Ещё, может быть, пролог (возможно, после ML/Haskell уже не надо - там ведь в основе тот же паттерн-матчинг), brainfuck (возможно, лишнее после ассемблера), forth (не знаю, что это).

Яве предпочёл бы что-то другое, но не знаю более простого языка с классовым ООП.

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

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

Разложите-ка С++ по базису (С, Python)

C++ = C + ML/Haskell + ... не знаю, simula? В крайнем случае и питон сойдёт.

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

Яве предпочёл бы что-то другое, но не знаю более простого языка с классовым ООП.

Питон же.

И да, на ЛОРе любой топик «выберете X среди Y» перерастает в срач.

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

спасибо за ответ - так стало более понятно. Если не ставилась цель троллинга - то очень интересная постановка вопроса была в топике. Я бы сказал исчерпывающая.

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

Есть где-то в сети диаграмма-дерево языков. Хорошо бы помедитировтаь на ней.

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

Форс - куда без него? Это просто атомная машина. Сейчас пролог не используется на практике - для студентов это как наказание. Лучше практичный эрланг, с упованием на пролог. У него низкий порог вхождения, только емакс придется освоить. Ассемблер обязательно. Как-то так на первый взгляд.

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

Питон же

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

на ЛОРе любой топик «выберете X среди Y» перерастает в срач

Я почему-то надеялся =) Были опасения насчёт лиспосрача (от него даже мог быть толк), но си-срач, да ещё такой упёртый... o_O

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

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

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

Да, унификация все через классы - это булшит. Все время приходится это обходить. Что то вроде питона на платформе jvm с опциональной статической типизацией было бы гораздо лучше. Сейчас вот жду когда kotlin станет прод реди.

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

Он полудохлый и без возможности статической типизации.

dizza ★★★★★
()

С and common lisp^w^w^w

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

Есть где-то в сети диаграмма-дерево языков

Эта?

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

Вещь, безусловно, занятная, но я не уверен, насколько полезная. Скажем, у меня в вузе была обычная машина Тьюринга, которую мы программировали в «четверках». Что это дало? Низкоуровневое мышление, ощущение единства кода и данных. Но это есть и в ассемблере, и он куда практичнее, и даёт понимание регистровой машины. Но когда я спросил препода, почему мы не учим ассемблер, он сказал: «Мы делаем куда лучше - учим вас МТ, а после неё никакой ассемблер не будет страшен». Я до сих пор не согласен, что это лучше, но спорить с профессором не берусь ) Может, чего не понимаю.

Сейчас пролог не используется на практике - для студентов это как наказание

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

Лучше практичный эрланг, с упованием на пролог

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

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

Ещё, может быть, пролог (возможно, после ML/Haskell уже не надо - там ведь в основе тот же паттерн-матчинг)

Вообще-то в Прологе унификация, а не паттерн-матчинг.

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

Вообще-то в Прологе унификация, а не паттерн-матчинг

Действительно, это сложнее. Я, оказывается, стал пролог забывать :(

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

если они есть, лол.

Напиши реализацию чего-нибудь более-менее сложного без либ на питоне - я поржу.

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

воинствующий погромист детектед.

Спорящий балабол детектед.

факт, что ты ламо остается.

мне пох на архитектуру. Пускай этим специально обученные обезьянки занимаются

Вот, вот. Обычный ламер-обыватель. Студент-бомж, работающий за еду говорит про обывателей.

лол.

я кроме как на _асме_ и паскале программировать не умею (octave, singular etc. too). Не, Ц конечно знаю, но в пределах необходимого для непрограммиста.

Хелворд на «асм» != умение программировать. Да, да в пределах необходимого, аля хелворда.

на асме я писал 3Д-«демку», есличо. С буфером глубины и освещением :)

O(n) может быть быстрее на порядки O(1), но не благодаря асму или 4ему-то там, а благодаря опять же алгоритмическим оптимизациям.

Оно быстрее может быть только из-за особенностей низов.

Ты только подтверждаеш то, что ты ламер.

Приведи пример «алгаритмический оптимизации», которая не является использованием св-в низов, которая из О(n) делает O(1) и наоборот- валяй.

Например Дейкстру можно на планарном графе за О(n log n) запустить, хотя сам по себе он O(n^2). Это навскидку.

Кроме того (а точнее собсно по теме) О(n^2) может быть быстрее О(н) (на наборе данных меньше некоторого) толко за счет констант при n и n^2. Это мы иногда можем наблюдать к примеру в численных методах. Или допустим в симплексном алгоримте (который по-факту экспоненциальный, но почти всегда работает в тыщи раз быстрее «эллиптического», который полиномиальный).

А из О(n) ты _никогда_ не сделаешь О(1). Тут тебе никакие низы не помогут. И константы ты тоже при n^k не поменяешь.

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

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

Так и запишем - делал лишь лабу уровня детсада.

ты читать умеешь?

А ты так и не ответил - сам ты чертил вообще? Имеешь хоть малейшее понятие?

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

Код.

ТС:

каждому концепту по языку - это для ознакомительных целей.

и тогда dsl по каждому концепту - Racket - так втом числе и используют как среду в котором можно пользовать отдельные языки в их первозданой красоте и в любой момент заглянуть(тут уже конечно специфика среды исполнения проглядывать начнёт ) по капот

у него же вроде и есть перечисление(по определению всегда не полное ) учебных подобразов разных рызностей .

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

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

В это ты весь. Твой код на питоне будет состоять из martix*matrix, которые просто заменятся на бинарники, которые к питону не относятся. Т.е. от пито у тебя там останется лишь синтаксис и вывод результатов. О5 сел в лужу.

на асме я писал 3Д-«демку», есличо. С буфером глубины и освещением :)

Молодец, творец одного творения.

Ты только подтверждаеш то, что ты ламер.

Да, да. Обоснуешь, пацантрэ?

А из О(n) ты _никогда_ не сделаешь О(1). Тут тебе никакие низы не помогут. И константы ты тоже при n^k не поменяешь.

Реальнэ? Единственное, куда ты можешь слить тему - это в теорию, использую идеальные условия.

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

Ты можешь слиться, балаболя, что n может быть бесконечно и больше порога, но я тебе повторю - там только в твоих «идеальных» фантазиях.

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

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

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

Ок. Ты даже не попытался понять, что я написал. ЧТД.

//dikiy

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

покури Бентли жемчужины программирование. да и вообще Бентли.

практик который жилит код.

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

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

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

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

Разумный человек всегда выберет свободу и не станет рабом шизы, аля МЫ жава - МЫ отрецаем ВСЁ, кроме ООП. МЫ лисп - МЫ отрицаем ВСЁ, кроме «функциональщины».

Вмеямый ЯП - это МЫ Си - МЫ внепарадигмальный МАТЕРИАЛ, МЫ удобная ПРОЕКЦИЯ асм НА ВЫСОКИЙ уровень. МЫ НЕ ГОВНО, ОГРАНИЧЕННОЕ ОДНОЙ ПРОСКОСТЬЮ. МЫ ограничены ТОЛЬКО тем, ЧТО НИЖЕ НАС, ибо МЫ лишь ПРОЕКЦИЯ.

Он своими рассуждениями делит на 0. Рассуждая о порочности жавы, которая отрицает рекурсию и указатели, но не обвиняя в той же порочности лисп, который ещё более порочен.

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

ох лол жаба не отрицает рекурсии(из современых языков вроде все(из общеупотребимых) стеком пользуются как концепцией встроенной в язык и рекурентностью)

ты эталон двоемыслия.

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

кто и где про указатели в жаве???

а рекурсии полно .

пши код

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

Суть разговоро сводилось к тому, что на стандартной реализации ЯП без кастылей нереально написать ГЦ на ГЦ.

Видишь ли в чем дело, если в ЯП ГЦ уже есть, то реализации языка с ГЦ на базе этого рантайма ГЦ писать просто НЕ НУЖНО.

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

программирование - умение формулировать процедуры для исполнения идеальными(т.е верными в интерпритации указаний) исполнителями.

Не правильно! Если язык декларативный, то вместо процедуры исполнения надо формулировать спецификацию. А какой процедуре исполнения она соответствует - это уже компилятор решит (или быдлокодер-сишник за доширак).

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

Язык - это объект выражения, который должен наследовать ограничение железа.

Зачем?

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

даже в случае декларативного языка цель задаёт программист - и вслучае ( пока ещё всегда) реалистичной цели вынужден и задавать какие леммы (подцели) необходимо достичь. - это и есть план-задание.

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