Pull to refresh

Comments 17

Черт! Никогда не понимал этот сайт, видимо он слишком огромный для моего осознания.

Скажите, я ведь опубликовал эту запись в «свой блог»? Её ведь могут читать только те пять парней что у меня в друзьях, или те, кто специально полез меня читать?

Я очень не хочу делать кат, только если кто-то еще присоединится к просьбе.
Этот сайт не совсем личные бложики. Тут все так или иначе попадает на ленту, которую многие читают. Кроме случаев, когда запись подзамочная.
не надо кат, статья небольшая
Кто-нибудь сможет Brainfuck описать?))
Нашел что brainfuck в русской википедии (не на английском — там более сырое описание) описан очень красиво, четко и кратко. Ура!, я теперь могу его вставлять в свое CV ;)
Ррр! Хватит кидать забытые слова!
Вы разрываете мне мозг!
Только как первый шаг. Все-таки примера печати на экране — недостаточно для осознания языка. Не хватает операторов присвоения, условия и еще нескольких основных.

С фразой «Хелло ворд», как раз связана претензия к большинству инструкций по языкам:

Как правило этот листинг появляется первым в тексте, и для того чтобы получить более полезный пример кода (с определением переменных, условиями и т.п.) надо листать куда-то далеко вперед. А там впереди уже все считают, что ты усвоил уроки первых параграфов и не дают пояснений.
Начинаю обратный отсчёт до первого упоминания Haskell в обсуждении. С целью доказать автору, что он прав лишь отчасти.
Взглянул на описание языка — да он сложен для объяснения. Но можете ли вы попытаться кратко описать его? Так, чтобы после прочтения можно было бы примерно разобраться в коде.
Какой обратный отсчёт — вы же его первым и упомянули. Про Prolog тут уже писали. Там же есть характерный пример кода для языка Scheme. Действительно можно в нескольких словах описать:
1. Программа состоит из вызова функций.
2. Функция define создаёт новую функцию (в примере таких две: solution и nokill), let тоже создаёт функцию, которая тут же (в месте создания) вызывается (в примере такая функция одна: p).
3. Выбор из двух вариантов делается либо особой функцией if либо особой функцией cond (они особые так как не все аргументы выполняются сразу).
4. Результат работы особой функции quiote (краткое название — просто апостроф) — это то, что написано в качестве её аргументов (для всех функций если написано (* 2 2), то это означает что они получают 4 и что-то с этим делают, но quote получает (* 2 2) в неизменном виде — и ничего с этим не делает).
5. Операторы сравнения — это тоже функции с характерными названиями: «=», «<», «>», «null?» и т.д. Для упрощения истина может быть записана как #t, а ложь — как #f.
6. Ну и наконец все данные состоят из списков, которые можно «разобрать» (на голову и хвост) функциями car и cdr, а «собрать» (если у вас есть голова и хвост) функцией cons.

Пожалуй имея такое описание уже можно что-то пытаться писать.

P.S. Обратите внимание что в описании нет ни циклов, ни операторов присваивания, ни оператора goto. Последнего просто нет, первые две вещи — присутствуют, но, по большому счёту, не нужны, а в кратком описании — уж точно.
С языками программирования так же как и с обычными человеческими языками: выучив первый, следующие учатся гораздо легче. За счет того, что основы уже известны и надо лишь найти параллели и обнаружить уникальные особенности. Тем не менее, каждый из языков обычно заточен на свою нишу, он предоставляет не только возможности, но и требует своего способа мышления. Иначе бейсик-программист полезет ставить goto куда ни попадя.

Люблю читать вступления в книжках — они настраивают на то, как с языком обращаться. Дают справку по истории языка, кто его разработчик. Без всего этого можно программировать, но в результате может получиться велосипед с квадратными колесами — ехать будет, но как-то не так.

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

ну да, просто синтаксический сахар над ленивым лямбда-исчислением, которое в трех словах описать можно ))

вот только я месяц мозг перестраивал, пока понял, что такое монады в нём

но оно того стоило — ощущение «enlightening» ни за какие деньги не купишь, ну разве что, может, под веществами…

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

так что, автор, ты неправ
Ну, не все языки такие.

Для тех, кто понимает — напишите «man Tcl» в командной строке. Получите краткое и достаточное описание языка. Более того, это действительно полное описание правил, по которым выполняется программа на языке Tcl.

Для тех, у кого нету команды man, есть веб-страница с тем же самым текстом и похожей организацией, www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm#M2
Когда на самом деле, все языки программирования похожи как братья, и для изучения нового требуется не более чем:

а) перечисление особенностей
б) характерный пример кода
в) список всех функций и операторов (этот пункт в интернете в избытке)

… наверное, единственный язык программирования, который я знаю...

Оно и видно. Одно дело написать примитивный «Хелоу ворлд!» а другое ИЗУЧИТЬ язык. Для некоторых нескольких лет мало. Я, к примеру, сумел овладеть не самым сложным из языков (C#) на более-менее хорошем уровне лишь за год part-time коммерческой разработки (100-120 часов в месяц) и то все время открываю в нем что-то новое для себя. Это при том, что за плечами было 4 года любительского и спортивного (олимпиады и TopCoder) программирования на С++.
Кстати да, тут уже писали, попробуйте со своими знаниями диалекта бейсика разобратся в каком-либо функциональном или декларативном языке. Да в конце-концов хотя бы в объектно-ориентированном. Я согласен, что зная С++ не составит труда овладеть Java или PHP. Но среди языков есть несколько семейств, которые сильно отличаются друг от друга, а есть и такие, которые объединяют эти семейства.
Sign up to leave a comment.

Articles