LINUX.ORG.RU
ФорумTalks

Еда из Карнеги-Меллоуна: у первокурсников ООП-капец


0

1

http://existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/

Для !Ъ,

бложик принадлежит одному из профессоров этого университета. Он вещает, что с этой осени первокурсникам больше не будут читать курс объектно-ориентированного программирования, так как, по его словам, «ООП анти-модульно и анти-параллельно по своей природе, а поэтому не подходит для современного курса CS».

Новая программа основ компьютерных наук в университете Карнеги-Меллоун будет включать курсы (отдельные) императивного и функционального программирования. Функциональное программирование будет преподаваться с использованием Standard ML.

Кажется, у фанатичных ООПщиков будет много баттхерта по поводу данного конкретного профессора и университета вообще.

Я использую ОО и мне лично оно только помогает лучше структурировать и разделять код. Пишу на перле и яваскрипте. Да, я в курсе про Higher Order Perl. Готов утверждать, что ООП и ФП решают одну и ту же задачу, и в умелых руках приводят к равнозначным результатам.

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

В университете как раз и нужно изучать ФП, ООП, АОП и т.д.p

Вот в принципе и я об этом. Но ООП выпало и пустоту решили заполнить целиком ФП. Это неправильно.

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

> Но ООП выпало и пустоту решили заполнить целиком ФП. Это неправильно.

Да не выпадало оно никуда. Сходи уже по ссылке.

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

Бред из разряда «Objects bind functions and data structures together in indivisible units. I think this is a fundamental error since functions and data structures belong in totally different worlds.». Дальше идёт бредовое «доказательство».

самое смешное что про CLOS какбэ при этом незаметно забывается

shty ★★★★★
()
Ответ на: комментарий от quantum-troll

> Только пожалуйста не в пределах одного языка — комбайн-подход отвратителен.

А смысл? Считаете, что гетерогенная среда лучше? Собственно, можно просто разделить синтаксис/область применимости.

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

Думаю, это легенда. В открытых проектах русских имен почти нет.

Зато если они там появляются, то всем сразу несладко становится. Один Шишкин только чего стоит.

Боюсь, «наши» завкафы не слышали о Standard ML (для протокола: я знаю, что такое MosML).

Еще бы. SML'у всего 20+ лет. Для зав. кафедры (а они обычно в годах) это слишком молодой язык.

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

Выкинуть на факультатив - это все равно, что выкинуть полностью. Отсилы 10% будут там что-то изучать.

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

> Думаю, это легенда. В открытых проектах русских имен почти нет.
Смотря в каких проектах (жест в сторону ReactOS, Haiku, KolibriOS, nginx, ejabberd и многих других).

quantum-troll ★★★★★
()
Ответ на: комментарий от spoilt

>Еще бы. SML'у всего 20+ лет. Для зав. кафедры (а они обычно в годах) это слишком молодой язык.

Подумаешь. Это же просто очередная реализация ФП :) Судя по наличию в названии слова «standard» это самый правильный хиганутый мета-язык не извращенный никакими еретическими наворотами. Там наверное всё изучение сводится к забыванию всего лишнего )))

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

> На ООП любое быдло писать может (спасибо крестам и сраной жабке)

Вот и дожил я до времени, когда C++ кодеров в открытую быдлом стали называть.

ну, там просто замалчивается факт что эта фраза есть не что иное как частный случай шаблона «на <whatever> любое быдло писать может» и ничего не говорится про качество написанного :)

shty ★★★★★
()
Ответ на: комментарий от quantum-troll

> Смотря в каких проектах (жест в сторону ReactOS, Haiku, KolibriOS, nginx, ejabberd и многих других).

После «KolibriOS» даже неудобно спрашивать 'каких «многих»'?

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

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

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

nanonymous
()
Ответ на: комментарий от quantum-troll

Выучить пару ЯП не составляет трудности, если это, конечно, не Си++.

конечно, быстренько выучить, а потом следующие лет 10 учиться писать оптимальный по разным критериям код :)

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

>Зато если они там появляются,

Единицы - это не показатель.

то всем сразу несладко становится. Один Шишкин только чего стоит.

То, что Шишкин нашел ошибку в реализации или дизайне BtrFS, само по себе не очень много значит.

Боюсь, «наши» завкафы не слышали о Standard ML (для протокола: я знаю, что такое MosML).

Еще бы. SML'у всего 20+ лет.

Ты просто не в теме. SML - это близкий родственник ML, которому уже 35+

Для зав. кафедры (а они обычно в годах) это слишком молодой язык.

Быть в курсе - обязанность завкафа.

tailgunner ★★★★★
()
Ответ на: комментарий от quantum-troll

> У вас какие-то претензии?

У меня толстый намек, что твой список неубедителен.

KolibriOS живёл just for fun

KolibriOS - это пример малограмотного дизайна. Приводить ее как пример чего-то иного - это еще хуже, чем постить ссылки на cat-v

tailgunner ★★★★★
()
Ответ на: комментарий от quantum-troll

>Выучить пару ЯП не составляет трудности, если это, конечно, не Си++.

Это объясняет повёрнутость ФП-шников на синтаксисе. Там где прогер на ООП освоив язык начинает ковыряться во внутренностях компиляторов, интерпретаторов или виртуальных машин и городить какую-то неведомую мазафаку, там ФП-шник садится учить другой язык или писать злобные пасквили о том, какие все остальные быдлы)))

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

То, что Шишкин нашел ошибку в реализации или дизайне BtrFS, само по себе не очень много значит.

Как будто Шишкин только и делал что искал ошибки в btrfs.

Быть в курсе - обязанность завкафа.

Согласен. Но в наших реалиях многие на это ложат прибор и продолжают проповедовать бред середины 80-ых. Всякое бывает.

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

> малограмотный дизайн.

открытых проектах

Да.
Но именно KolibriOS раздражает. Это fasm?
На cat-v собрано сотни годной документации, он не ограничивается одним лишь разделом harmful. Но это как-будто не было замечено.
You're boiling like a cattle. Но это неэффективно же.

quantum-troll ★★★★★
()
Ответ на: комментарий от tailgunner

> StandardML - это хорошо. Но вот только какое влияние это о5ажет на окружающий мир - еще вопрос. Скорее всего - никакого. Вроде в MIT до конца 90-х курс SE преподавался на Clu. Сколько человек на ЛОР хотя бы слышали о Clu? %)

Так учат же ФП, а не конкретному языку. Зачем цепляешься к языкам? Так, потроллить что-ли?

ky-san
()
Ответ на: комментарий от mutronix

> Там где прогер на ООП освоив язык начинает ковыряться во внутренностях компиляторов, интерпретаторов или виртуальных машин и городить какую-то неведомую мазафаку, там ФП-шник садится учить другой язык или писать злобные пасквили о том, какие все остальные быдлы

У тебя маразм головного мозга.

)))

Это ныне модные в рунете быдлосмайлики?

ky-san
()
Ответ на: комментарий от spoilt

>Что кстати удивительно. По-моему в ФП языках как раз плодился вывихнутый на голову синтаксис.

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

mutronix ★★★★
()

ФП не съедобно без ООП. Потому, что ФП в чистом виде не предоставляет выразительных средств для моделирования, кроме как функционального моделиования (в смысле функционального бизес-анализа). С точки зрения моделирвоания ФП едва ли лучше процедурного. Все теже алгоритмы + данные, просто с оговорками, что алгоритмы реализуются без сайд-эффектов, данные иммутабельны и так далее.

Очень хорошо про первичность моделей писал наш ученый Нариньяни: http://www.protiv.tv/m-kalashnikov/Narinyani.html

ФП - это крайность. А все крайности, сами знаете.

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

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

Экстремально простой синтаксис и потрясающе монструозные структуры программ. Без нормальной подсветки синтаксиса (и порой даже с ней) хрен поймешь что и где (особенно если читаешь чужой код). Хотя я сужу скорее не по Lisp, а по Scheme (с которым уже почти два года в обнимку).

spoilt ★★★
()

Надо преподавать Nemerle, хочешь - пиши в ООП стиле, хочешь - в функциональном, хочешь - в процедурном, хочешь - помесью :)

mono ★★★★★
()
Ответ на: комментарий от quantum-troll

> Но именно KolibriOS раздражает. Это fasm?

Нет. fasm - это глупость, но простительная.

You're boiling like a cattle

Психоаналитеги такие психоаналитеги.

tailgunner ★★★★★
()
Ответ на: комментарий от ky-san

>> StandardML - это хорошо. Но вот только какое влияние это о5ажет на окружающий мир - еще вопрос. Скорее всего - никакого. Вроде в MIT до конца 90-х курс SE преподавался на Clu. Сколько человек на ЛОР хотя бы слышали о Clu? %)

Так учат же ФП, а не конкретному языку.

Копетан?

Зачем цепляешься к языкам? Так, потроллить что-ли?

А догадайся. Можешь даже подумать, если умеешь.

tailgunner ★★★★★
()

Тем временем…

«On the 25th, in Madrid, Spain, the ISO C++ committee approved a Final Draft International Standard (FDIS) for the C++ programming language. This means that the proposed changes to the new standard so far known as C++0x are now final. The finalization of the standard itself, i.e. updating the working draft and transmitting the final draft to ITTF, is due to be completed during the summer, after which the standard is going to be published, to be known as C++ 2011.
http://developers.slashdot.org/story/11/03/26/1949225/ISO-C-Committee-Approve...

Deleted
()
Ответ на: комментарий от quantum-troll

>Насчёт читабельности лиспа соглашусь, а вот насчёт фактора — нет, он в этом плане как раз довольно приятен.

У лиспа проблемы с читабельностью из-за того, что это не ФП язык :)

Для ФП языков читабельно имеет огромное значение, ибо после того, как листинг программы переваливает за 10 страниц программа на глазах начинает коптить и гореть синим пламенем. Чего ещё ждать от языков, в которых нет типизации, нормальных областей видимости и ограничения доступа к объектам. Ой, каким ещё «объектам»? ;)

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

>кто-нить въехал почему ООП зло? Я вот пока въехать в это не могу: http://lambda-the-ultimate.org/node/4235#comment-64975

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

...чем грузины...

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

> Чего ещё ждать от языков, в которых нет типизации, нормальных областей видимости

В каких ФП-языках нет областей видимости и типизации? %)

и ограничения доступа к объектам. Ой, каким ещё «объектам»? ;)

Си это не мешает.

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

> Чего ещё ждать от языков, в которых нет типизации
Это какие ещё? Мы же не про форт говорим, ведь так?

quantum-troll ★★★★★
()
Ответ на: комментарий от proud_anon

как если бы ты писал на языке, основанном на лямбда-исчислении.

Вот то, что ФП - это парадигма основаная на лямда-исчислении - это скорее миф. Лямда исчисление - это математическая нотация, вроде машины тьюринга. ФП обычно опеределяют по некоторым характерным признакам, строго определения нет.

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

Ну, я вот сейчас пример ML кода посмотрел:

fun fac(n) = if n = 0 then 1 else n * fac(n-1);

Это действительно круто. Сразу чувствуется наличие серьезного интерпретатора, раз он может распарсить конструкции вида fun fac(n) = if n = 0

Только где тут типизация? Что есть fac() и что есть n? Целое число или с плавающей точкой? Сколько памяти под неё выделяется? Просто val n? А область видимости это не только блоки, но пространства имен, например.

Си это не мешает.

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

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

> fun fac(n) = if n = 0 then 1 else n * fac(n-1);

Только где тут типизация?

ну то есть ты путаешь типизацию и явное указание типа.

нет типизации, нормальных областей видимости и ограничения доступа к объектам. Ой, каким ещё «объектам»? ;)

Си это не мешает.

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

Ты макросы дублированием кода называешь или что?

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

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

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

>ну то есть ты путаешь типизацию и явное указание типа.

Это вообще должно быть синонимично. Чтобы потом не париться ручным округлением, например.

Ты макросы дублированием кода называешь или что?

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

Макросы - это отдельная больная тема Си, относящаяся к отсутствию в нем шаблонов.

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

Ну, я вот сейчас пример ML кода посмотрел:

fun fac(n) = if n = 0 then 1 else n * fac(n-1);

Это действительно круто. Сразу чувствуется наличие серьезного интерпретатора, раз он может распарсить конструкции вида fun fac(n) = if n = 0

а что тут сложного? вот некоторые языки допускали пробелы в именах переменных и имена переменные совпадающие с зарезервированными словами - вот где адъ был

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

> Нет, я про необходимость дублирования кода из-за отсутствия механизма наследования свойств уже существующих классов.

Ясно. Для протокола: такие вещи в Си обходятся при помощи трюков с void *

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

>Только где тут типизация?

Типизация в ML-ях строгая и статическая.

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

>Ясно. Для протокола: такие вещи в Си обходятся при помощи трюков с void *

Переписывать чужой уже отлаженный код?

mutronix ★★★★
()
Ответ на: ФП — парадигма элиты. от PolarFox

А обладая еще более глубокими знаниями можно придумать еще более неудобные парадигмы. Было бы желание

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

>>Студенту со знаниями, полученными только в университете, место в биореакторе.

Сидел или служил?

Нет, и знаниями в этих заведениях не снабжают.

nanonymous
()

Есть ненулевая вероятность, что я глупее всех в треде, поэтому прошу мне подсказать, каким образом можно в ФП-онли языках оперировать нормально функциями и структурами данных так, чтобы не вызывать попаболь на исходниках хотя-бы 10к+ строк использующем много сторонних библиотек.

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