All streams
Search
Write a publication
Pull to refresh
36
0

Сертифицированный инструктор по прокрастинации

Send message
А я слышал, что крыс спаивают водкой. У них печень не такая крупная, как у человека, поэтому стремительно деградирует, приказывая хозяйке долго жить.
Примечательно, что Scheme находится на 29ом месте, обгоняя даже Erlang и Haskell. Возможно, благодаря наличию over 9000 реализаций и присутствию разных диалектов языка в CAD'ах, GIMP'е и т. д.
Кажется, был диалект Scheme с типизацией, чуть ли ни inferred. Typed Scheme, по-моему.
Пардон. Должен был сказать, что подразумеваю Haskell и ему подобные языки с выведением типов (type inference).
А лучше статически типизированным, чтобы не было ошибок времени выполнения.
Хватит (...) выбора идеального трека в плеере для работы

Удалось решить эту проблему с помощью Pandora.com.
Просто попробуйте читать SICP и выполнять предлагаемые задания. Где-то до 70ой страницы у вас гарантированно не будет сложностей, хоть язык – Scheme – для вас внове. Для выполнения этих заданий на C вам пришлось бы изучить значительное количество моментов, оттягивающих выполнение заданий.

«Чтобы понять, нужно гонять» ©
Я однажды слышал, как кто-то сказал, что лучшим пользовательским
интерфейсом из когда-либо разработанных является карандаш. Его
назначение тотчас же понятно, для него не нужно руководство
пользователя, он готовится к работе без особой суеты. Однако наиболее
важным свойством является прозрачность. Когда вы пользуетесь
карандашом, то думаете о том, что вы пишите, а не о самом карандаше.

Подобно карандашу, лучшими компьютерными интерфейсами являются
те, которые скрывают сам факт того, что вы обращаетесь к компьютеру:
замечательный пример — интерфейс с системой зажигания вашего
автомобиля. Вы поворачиваете зажигание, включаете скорость и жмете на
газ, как если бы все эти объекты интерфейса (ключ, рычаг скоростей,
педаль) были прицеплены прямо на двигатель. Тем не менее, это не так:
они теперь обычно просто устройства ввода в компьютер, который
управляет двигателем.


© Allen Holub, Веревка достаточной длины, чтобы выстрелить себе в ногу.

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

Декларативные языки разрабатываются для быстрой разработки качественного кода, а не ради прикола. Иначе ничего не было бы кроме C. К тому же вы сами выше сказали, что C – абстракция над языком ассемблера.

Я пока не понял, что вы имели в виду, говоря «ассемблер — кривая реализация декларативных инструкций». Я вспоминаю, например, команды inc eax, mov eax, [eax] и понимаю, что они не очень-то декларативны, а вполне императивны, поскольку говорят «как», а не «что», модифицируя глобальное состояние (регистры).

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

Они не понимают, зачем им нужна математика и как она им помогает в программировании, потому что когда им показываешь код int c = 40; c = c + 2;, у них возникает внутреннее противоречие и они не видят связи абстрактной математики без побочных эффектов с побочными эффектами в ассемблере и чуть более абстрактным C.

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

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

А Вижуал Бейсик изменился, да – включил себя много вещей, традиционно относимых к миру ФП и декларативного программирования: LINQ, например, дженерики в Java и т. д., всего и не перечислить.
Важно, но я считаю, пусть они как-нибудь сами изучат C потом. И вот почему.

Я полностью согласен со своим бывшим преподавателем предмета Функциональное и логическое программирование в университете, когда она сказала, что сначала нужно изучать декларативное программирование, а потом уже изучать C и т. д.

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

Т. е. правильно уже сказали, что прежде всего лучше знать, «что решить», а не «как решить». Как решить – это уже о производительности (если мы о коде на C), написании драйверов для конкретной архитектуры, написании оптимизирующего компилятора для ОС.

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

И я очень жалею, что учась в своих учебных заведениях узнал о декларативном (и функциональном в частности) программировании так поздно, ведь я потом понял, как проще было бы студентам мыслить в терминах Scheme, Haskell, Erlang.

Простите, наболело.
Мы ведь говорим об обучении основам программирования, а не о практическом применении того или иного языка. И я лишь предположил, что C, Java, PHP – менее удачные языки для знакомства с программированием, чем Scheme, Lisp, Haskell по причине своей сложности.
Ну, правильно – ответ на «главный вопрос Жизни, Вселенной и Всего Остального» ;-)
Да, но только после Scheme. C в частности и императивные языки убивают в человеке способность мыслить абстрактно. Вот что сказал Э. Дейкстра, например:
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации.


цитата отсюда.
Согласен. Для этого хорошо подходит SICP, а Scheme выбран там чисто как самый наглядный и простой язык. Обеими руками за SICP – ее должен прочитать каждый!
ipfw – и на производных и в Ubuntu портировано. И даже на Windows замечено! ;-)
Просто валерианы под нос сунуть.
Оффтопик: а почему фотошоп — дрянь. Просветите хоть парой слов не работающего плотно с графикой :)

Information

Rating
Does not participate
Location
Россия
Registered
Activity