Re[7]: А почему бы первым языком не взять Haskell?
От: Poopy Joe Бельгия  
Дата: 07.04.15 20:33
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>1. На каждой итерации карандаш изменяет состояние листа бумаги. Он не создаёт новый лист с новой линией, не делает вклейку с изменением, и не создаёт объекты-действия которые связываются друг с другом в монаде через >> и потом выполняются через unsafePerformIO — он просто изменяет лист бумаги.

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

EP>2. Сам алгоритм вычисления описывается как последовательность действий меняющих состояние, то есть императивно.

https://www.youtube.com/watch?v=SjSHVDfXHQ4
Вот где тут состояние которое надо менять?

EP>Код механически отображается на линейку, циркуль и бумагу, со всеми этими итерациями и изменениями состояния. Попробуй аналогичным образом отобразить "идиоматичный ФП".

Вот как раз изменения состояния там нет, есть бесконечный ряд чисел. И функциональное решение на порядок чище и понятнее. Особенно если его написано в не менее каноническом, но менее пугающем новичков виде генераторов списков.
fibs = 0 : 1 : [a + b | (a,b) <- zip fibs (tail fibs)]


EP>Практика показывает что многим это даётся с трудом

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

EP>А что, потребности в инженерах (или как ты их не назови) создающих практичные вещи уже нет, и вместо неё теперь потребность в эстетах пишущих на академических языках тёплый-ламповый элегантный код?

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

EP>Во-первых, в чём измерять качество?

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

EP>А во-вторых, то что код будет более качественный — это никак не очевидно. Я бы даже сказал что при массовом начальном обучении программированию через ФП, средне-сферическое качество этого самого ФП кода будет неуклонно падать

У чистой функции нет побочных эффектов. Она либо работает, либо не работает, кто бы ее там не написал. Да качество кода может упасть в смысле эффективности, но на с++ результат будет еще ужаснее и разрушительнее.

EP>То есть ты утверждаешь что мейнстриму обучали плохо, а вот при переходе на ФП вдруг сразу начнут хорошо и правильно

Можно учить танцам на граблях, а можно учить польке. Как-то так.

EP>Ну конечно, ведь компиляторы сейчас настолько круты, что оптимизируют до такой степени чистый ФП код, что он не уступает по скорости императивному

99.99% кода страдают не от недостатка скорости, а от избытка багов. И да некоторые вещи на ФП получаются быстрее, потому что легко распараллеливаются. И дешевый параллелизм куда выгоднее микро-оптимизаций компилятора, которые не факт, что в следующей его версии не будут во вред.
Re[9]: А почему бы первым языком не взять Haskell?
От: Poopy Joe Бельгия  
Дата: 07.04.15 20:48
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Задача ВУЗа — не выпустить готового сотрудника


Ну вот рядом мне доказывают, что такие готового.

S>Задача куда сложнее: массово получить на выходе человека, способного к самообразованию и к работе по любой специальности в рамках довольно широкой предметной области. Без особых оговорок, без требования гениев-студентов и гениев-преподавателей, без необходимости постоянно возвращаться и изучать "ненужные" куски матчасти. Ну т.е. в общем случае нерешаемая задача.


И при этом отказываться его учить теории, а грузить паскалем и с++?! Это несколько странно.

S>Из многолетнего опыта сложилась более-менее рабочая схема (намеренно упрощаю)


Я ничего не могу сказать про саму схему. Я могу сказать, что результат на выходе получается так себе, если человек на занимается сам. Кто и почему решил, что именно такая схема правильная и рабочая я не знаю.
Что были попытка учить хаскелю и все провалились что ли? Откуда такая уверенность, что это ерунда и не сработает?

S>Но это мы отошли от темы. Так вот, попытка в первые два года совмещать горы хардкорной матчасти с полноценным изучением любой профильной дисциплины


Я не говорил ни про какую хардкорную матчасть. Хаскаль не такой уж страшный язык. Для курсовых и прочего хватит и вводного курса. Проблема в том, что если его не дать сразу, то потом изменить мышление с императивного чрезвычайно трудно. И вот именно это и проблема. Выбирая между небольшой горкой и ямой — выбирают яму.
Re[9]: А почему бы первым языком не взять Haskell?
От: Poopy Joe Бельгия  
Дата: 07.04.15 20:51
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А вот когда хаскелисты отказываются понять сиплюсный подход, хотя не в силах выдать и близкий по перформансу код, это говорит и о хаскеле и о хаскелистах.

I>Естественно, каждый эльф или 'иксперт' скажет, что система образования ни при чем, он де сам чисто с нуля освоил хаскель.

Я таких глупостей ни не говорил, ни даже не думал. Зачем это мне писать?
Re[11]: А почему бы первым языком не взять Haskell?
От: neFormal Россия  
Дата: 07.04.15 20:59
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Ну не получится без функана перейти к рядам Фурье и куче алгоритмов обработки изображений/звука, без теории вероятности и марковских цепей — к теории обслуживания, fuzzy logic в ИИ и к вероятностным подходам в теории управления и т.д. и т.п. Т.е. упростить/избавиться тож не особо получается.


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

F>>длительное "введение" достаточно плохо отражается на понимании. т.е. необходимо какое-то время на то, чтобы тема "улеглась в голове".

F>>честно говоря, не вижу никаких проблем с нынешним подходом к начальным знаниям.
S>А тут у нас недопонимание по ходу Теория не означает отказ от закрепления на практике, или полное отсутствие дисциплин по специальности, просто упор не на них идёт. А так простенькие программы на лабораторных по информатике/сетям и тем более вычмату — абсолютно в порядке вещей.

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

S>Огроменная проблема. Если везёт и с вузом соглашается работать какая-нибудь контора и находят лектора с опытом работы — это огромный плюс. Увы, зависит только от пробивной способности руководства кафедры.


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

F>>я чего не понимаю.

F>>почему эти вещи не скрещивают? т.е. давать матан, статистику, физику вместе с требованиями реализации на каком-нибудь языке. желательно ещё по адекватной теме.
S>Дают конечно, но не сильно усложняют. Потому что на младших курсах нет ни времени на полноценное изучение программирования для решения сложных задач, ни ресурсов для массовой проверки объёмных работ.

да, теперь понятней.
пока нет выработанных/выученных подходов к проектированию и написанию кода каждая программа будет уникальной головоломкой. хрен проверишь.
но при этом нельзя разве это встроить в существующую систему? ну, чтобы студент насмотрелся на примеры хорошего кода и старался мимикрировать под них.
...coding for chaos...
Re[10]: А почему бы первым языком не взять Haskell?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.04.15 21:01
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>Здравствуйте, Ikemefula, Вы писали:


I>>А вот когда хаскелисты отказываются понять сиплюсный подход, хотя не в силах выдать и близкий по перформансу код, это говорит и о хаскеле и о хаскелистах.

I>>Естественно, каждый эльф или 'иксперт' скажет, что система образования ни при чем, он де сам чисто с нуля освоил хаскель.

PJ>Я таких глупостей ни не говорил, ни даже не думал. Зачем это мне писать?


Я ж сказал — "каждый эльф или 'иксперт'". Ты кто, эльф или 'иксперт', раз решил что речь про тебя ?
Re[10]: А почему бы первым языком не взять Haskell?
От: neFormal Россия  
Дата: 07.04.15 21:04
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>Проблема в том, что если его не дать сразу, то потом изменить мышление с императивного чрезвычайно трудно.


даже не рядом.
магическое фп-мышление ничем особо не отличается.
...coding for chaos...
Re[8]: А почему бы первым языком не взять Haskell?
От: neFormal Россия  
Дата: 07.04.15 21:08
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>И да некоторые вещи на ФП получаются быстрее, потому что легко распараллеливаются. И дешевый параллелизм куда выгоднее микро-оптимизаций компилятора, которые не факт, что в следующей его версии не будут во вред.


то, что легко параллелится в ФП так же легко параллелится и в императивщине.
...coding for chaos...
Re[6]: А почему бы первым языком не взять Haskell?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.04.15 21:44
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

EP>>А вот попробуй объяснить вот этот "идиоматичный ФП" код ребёнку:

PJ>Ну объясни каноническую реализацию на шаблонах. Сильно легче будет? Да хоть и просто в коде, если это ребенок, который про с++ ничего не знает.

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

Скажем, классика — "открыть дверь"

В императивной версии командуем "дверь повернись на 0.1 градуса" в течение времени х. В любой момент времени можно узнать состояние двери.

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

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

Скажем, обработка видео в модели непрерывного времени ничего не даст — информация уже потеряна и её не восстановить. На пол-кадра, где девушка снимает трусы, не перемотаешь
Re[6]: А почему бы первым языком не взять Haskell?
От: alex_public  
Дата: 07.04.15 23:53
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

_>>Угу, особенно на нём удобно показывать концепцию последовательного выполнения кода. )))

PJ>Удобно. Не хуже чем на с++. Вот уж как "удобно" на с++ писать параллельное выполнение...

Ага, ленивость тут ну совершенно никак не помешает студентам. )))

А что у нас с параллельность в C++ не так? В отличие от маргинальных языков тут можно найти вообще все возможные виды моделей реализации параллельных вычислений.

_>>А уж как удобно будет демонстрировать работу с мутабельным переменными я вообще молчу.

PJ>И правильно. Потому что демонстрировать надо не как с ними работать, а почему с ними работать не надо...

Да да, и не забыть объяснить, почему мы при этом прощаемся с производительностью. )))
Re[25]: о первом языке программирования для начинающих
От: alex_public  
Дата: 08.04.15 00:09
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ты сам посмотри — большая часть этих вещей и есть обертка для того, что бы из Си вызывать.


Может оно и обёртки, но иногo доступа к данной функциональности у нас всё равно нет.

I>Именно — сплошные интерфейсы. COM он целиком и полностью про интерфейсы.


Он действительно про про интерфейсы, но только вот api реализован не через них.
Re[45]: Профи-не профи. К вопросу об Оберонах
От: alex_public  
Дата: 08.04.15 00:33
Оценка: 2 (1) +1
Здравствуйте, Ikemefula, Вы писали:

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

I>Скажем, для ключевых курсов всё равно приходится брать людей из РАН. Опаньки !

Воот, это уже более менее конструктивный разговор. На данную тему можно реально дискутировать, т.к. однозначно правильный ответ пока неизвестен. Могу изложить пару базовых аргументов за ту и за другую сторону:

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

В целом мне кажется, что разумным оптимумом должна быть некая смесь подходов. Когда все начальные курсы (первые 2-3 года) читают именно великолепные педагоги (для которых это и является главным делом в жизни) — всё равно там излагаются в основном материалы прошлых веков. А на старших курсах читают ведущие в отрасли учёные и инженеры, чтобы выпускники могли обладать самой актуальной информацией.

Кстати, в том же МГУ по большей части такая смешанная система и действует (правда это не официальная схема, а просто "так сложилось"). И получается отличный результат, который потом с удовольствием расхватывают на PhD те же самые Гарварды и т.п. Только вот по академическим индексам этого не увидишь, т.к. большинство этих ведущих учёных являются "приглашёнными звёздами".
Re[19]: Еще один вопрос задам
От: alex_public  
Дата: 08.04.15 00:55
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>Дорога в ад, например, это пытаться менять объект из нескольких потоков.


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

PJ>ФП это не только чистые функции. Если надо что-то поменять, то это будет выделено явно и изолировано.


Угу, именно так и возникают горы монадного говнокода.


Вообще идея авторов Хаскеля была очень даже не плохой, если оставаться в рамках их уютного академического мирка. В нём мы имеем в своём приложение процентов 10 всякой неконтролируемой "гадости" (взаимодействие с внешним миром, работать с мутабельными данными и т.п.) и процентов 90 "хорошего" кода. Естественно возникает идея изолировать гадость, что и было с успехом сделано. Правда при этом эту гадость стало очень неудобно писать, но это же не проблема, т.к. это какие-то там небольшие проценты от всего приложения. Небольшая жертва за математическую чистоту всего остального кода.

Только вот при переходе из академического мирка в реальный "неожиданно" оказывается, что реальные приложения занимаются той самой "гадостью" скорее уж на 90% и в итоге получаем редкостный мрак и ужас.
Re[7]: А почему бы первым языком не взять Haskell?
От: alex_public  
Дата: 08.04.15 00:57
Оценка: +1
Здравствуйте, neFormal, Вы писали:

F>индустрии ФП не нужно.


Я бы это переформулировал как "индустрии чистое ФП не нужно". Потому как различные элементы ФП, интегрированные в современные мультипарадигменные языки, не просто нужны, а уже много лет как используются.
Re[17]: Еще один вопрос задам
От: Pavel Dvorkin Россия  
Дата: 08.04.15 03:02
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Это называется алгоритм выбора (selection algorithm), одной из реализаций которого и является quickselect. В STL это std::nth_element.


PD>>В частности, если нужно найти средний элемент, то это поиск медианы, а у этого алгоритма зависимость ln(N), так что линейный алгоритм здесь недопустимо медленный.


EP>ln(N) не получится в любом случае — данные не отсортированы, придётся просмотреть каждый элемент хотя бы один раз.



Да, линейный, ты прав.

EP>Я предлагаю это в качестве инструмента контроля оценок, а не в качестве замены (ни в коем случае!).


Вот тут согласен, конечно.
With best regards
Pavel Dvorkin
Re[21]: о первом языке программирования для начинающих
От: Pavel Dvorkin Россия  
Дата: 08.04.15 04:09
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Есть некоторые принципы преподавания. Один из них — никогда не изучайте одновременно два противоположных подхода.


НС>ФП и ИП не противоположны, они ортогональны.


ЕМНИП ты (или не ты ?) утверждал, что ИП является частным случаем ИП. Если это так, то они никак не могут быть ортогональны

Но дело даже не в этом, мы же не в математике, в конце концов.

PD>>Нет, не имеет смысла. Хочешь — верь мне, хочешь — не верь, но так учить нельзя.


НС>И рядом же ты цитируешь про испорченность Бейсиком.

НС>Понимаешь, и императивное программирование, и твои любимые низкоуровневые фенечки — тот же самый Бейсик. В начале изучения открываются, как кажется студенту, безграничные возможности и все остальное отметается как ненужное. И все, моск закостенел, и когда он столкнется с проблемой, он так и будет долбиться об стенку.

С этим согласиться можно лишь отчасти. Да, формируется некий подход (колея). Но формировать две колеи одновременно — весьма большой риск хаоса в голове.

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

Тебе предстоит учить начинающих. Компьютер они видели и с ним работали, в программировании полный ноль пока что.

Ты хочешь их учить одновременно ИП и ФП, я правильно понял ?

Напиши учебную программу на первый месяц занятий. Скажем, по 4 часа на то и это (больше, извини, не дам, все же надо сообразоваться с реальностью, 8 часов в неделю и так много, в вузе такого не будет). Понедельно. Языки на твое усмотрение, но просьба остаться в рамках того, что я знаю, то есть не брать F# , Хаскель и Nemerle). Иными словами, из ИП языков бери любой мэйнстримовский, из ФП — Scala или C#. Если последнее требование для тебя слишком жесткое — бери любой, авось разберусь в начальном курсе

То есть примерно так

ИП (не надо критиковать, это лишь набросок, пиши свое)

1 неделя. Общие сведения о языке и IDE. Структура простейшей программы. Переменные, ввод и вывод, операция присваивания, условный оператор
2 неделя : Цикл for, цикл с предусловием
3 неделя ...
4 неделя ...

ФП

...

С моей стороны только одно условие : все должно быть по существу. Никаких общих слов. Я прихожу на занятие и действую по этой программе. Я им буду рассказывать именно об этом, а потом мы будем делать упражнения именно на эту тему.
With best regards
Pavel Dvorkin
Re[8]: А почему бы первым языком не взять Haskell?
От: neFormal Россия  
Дата: 08.04.15 05:10
Оценка:
Здравствуйте, alex_public, Вы писали:

F>>индустрии ФП не нужно.

_>Я бы это переформулировал как "индустрии чистое ФП не нужно". Потому как различные элементы ФП, интегрированные в современные мультипарадигменные языки, не просто нужны, а уже много лет как используются.

уберёшь эти элементы, и ничего фатального не произойдёт.
...coding for chaos...
Re[10]: А почему бы первым языком не взять Haskell?
От: Sinix  
Дата: 08.04.15 06:25
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>И при этом отказываться его учить теории, а грузить паскалем и с++?! Это несколько странно.

Эмм.. вы вообще читаете ответы, или так, чисто посраться?
Я там выше для кого в три абзаца расписывал что и в каком порядке изучается?
Паскаль изучается в следовых количествах, чтобы с первого семестра делать лабы по остальным предметам. Плюсы и прочие языки — зависит от конкретной учебной программы и от ВУЗа. Могут дать чисто факультативно, могут для желающих проспонсировать сертификацию (поискал — например, лет 15 назад это был MS 70-016, если ничего не путаю). Но опять-таки, это на старших курсах.


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

Бинго. Потому что все остальные и не должны идти в ВУЗы, это кормовая база для колледжей и ПТУ. Или надо ждать, что в ВУЗе студент ни-ни, а на работе так сразу да?
* Я прекрасно знаю о исключениях в обе стороны, но мы говорим о системе, заточенной на _массовый_ выпуск, а не на одиночек-уникальностей.

PJ>Что были попытка учить хаскелю и все провалились что ли? Откуда такая уверенность, что это ерунда и не сработает?

Хуже, даже с питоном не очень пошло. Но это со вторых рук — в смысле, пересказ пересказа человека, который эту идею продавил, а затем сам и мучался. Для всяких смежных специальностей (математика + информатика, экономика + информатика итп) питон — самое оно, решили заодно адаптировать для разработчиков — жуть-печаль-беда. Куча разбирательств на лабораторных, преподавателю практически всё время приходилось работать компилятором. И весёлые приключения при изучении статических языков, по сути приходилось снова начинать с азов из разряда "так делать низзя, потому что".

А с хаскелем всё ещё хуже пойдёт — на динамическую типизацию наложится недостаток знания матчасти. И язык не изучат, и лабы не сделают. Нафиг-нафиг.

PJ>Я не говорил ни про какую хардкорную матчасть. Хаскаль не такой уж страшный язык. Для курсовых и прочего хватит и вводного курса.

Было уже. ВУЗ не учит языку. Задача — дать в понятном виде концепции, заложенные в определённой группе языков. Чтобы не было удивления при переходе с паскаля на старый c, с питона — на ruby, с явы — на шарп и тд и тп.

Давать хаскель в полном объёме на первом курсе нереально. Изучать "чтоб было" — всё равно, что начинать обучение лингвистов с пиджин-инглиша. А чо, будут же разговаривать
Re[12]: А почему бы первым языком не взять Haskell?
От: Sinix  
Дата: 08.04.15 06:41
Оценка:
Здравствуйте, neFormal, Вы писали:

S>>Ну не получится без функана перейти к рядам Фурье и куче алгоритмов обработки изображений/звука, без теории вероятности и марковских цепей — к теории обслуживания, fuzzy logic в ИИ и к вероятностным подходам в теории управления и т.д. и т.п. Т.е. упростить/избавиться тож не особо получается.

F>мне кажется, что проблемы нет.
Ну и получится совсем фрагментарная солянка, причём с постоянными проблемами из-за "курс надо адаптировать, т.к. теорию студентам не дали". Таких фрагментов где-то с десяток-два наберётся, проше их в полноценный курс упаковать, чем соображать наперёд, что важно, что нет)



F>пока нет выработанных/выученных подходов к проектированию и написанию кода каждая программа будет уникальной головоломкой. хрен проверишь.

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

Можно, где-то попадалась статья про попытку имитировать реальный процесс разработки при обучении. Лабы давались в виде "вот спецификации, вот система тестирования, вот частично готовая система — добавляй свой кусок". Начиналось с "вот кусок кода, найди ошибку", "попробуй ускорить", "вот код без документации, понять и починить". Фишка в том, что после трёх-четырёх лаб студент получал работающую простенькую игрушку/программу, которую частично написал он. Подход был утащен из обучения робототехнике (там иначе по большому счёту никак), но насколько знаю такие подарки студентам — это редкость.

Повторюсь, на сегодня всё зависит от энтузиазма преподавателей/кафедры/администрации ВУЗа
Re[7]: А почему бы первым языком не взять Haskell?
От: Poopy Joe Бельгия  
Дата: 08.04.15 07:20
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>В функциональной — ничего не командуем, а просто задаём функцию. Дверь сама окажется повернутой на нужный угол в зависимости от того, когда на неё обратит внимание наблюдатель, при этом будет создано N иммутабельных копий двери с разными углами поворота.

Феерическая ахинея.
https://wiki.haskell.org/State_Monad
Re[26]: о первом языке программирования для начинающих
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 08.04.15 07:20
Оценка:
Здравствуйте, alex_public, Вы писали:

I>>Ты сам посмотри — большая часть этих вещей и есть обертка для того, что бы из Си вызывать.


_>Может оно и обёртки, но иногo доступа к данной функциональности у нас всё равно нет.


Вообще то есть. GoCreateInstance и все похожие скажем разворачиваются в запрос фабрики классов и инстацирование через её экземпляр. Иди, другой пример, нет принципиальной разницы пользоваться именно OleCreateFromFile или делать тоже самое руками. OleCrearXxx — целая куча. Базовая — ровно одна, чтото навроде CoGetObject

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

I>>Именно — сплошные интерфейсы. COM он целиком и полностью про интерфейсы.


_>Он действительно про про интерфейсы, но только вот api реализован не через них.


Это заблуждение. Глобальные функции в основном вспомогательные. Есть около десятка, может немного больше базовых, которые в основном инициализируют, инстанцируют или разрушают.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.