Парадигмы программирования — парадигмы сознания

24.06.2013

Продолжим заполнять наш опросник который задают программистам iOS на собеседовании. Мы подобрались к пункту:

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

 

Теория это вам не практика!

Итак начнем.

А начну пожалуй со слова Парадигма. Если верить Википедии:

Паради́гма (от греч. παράδειγμα, «пример, модель, образец») — совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность развития науки и научного творчества.

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

Так вот вернемся к нашим парадигмам программирования. Опять же Википедия:

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

Их было и есть несколько:

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

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

Эволюция чистой воды, а вот что дальше?

Вот как-то так!

Не могу себе представить ситуацию в которой создается конечный автомат или функция не изменяющая никаких значений. Точнее могу, но это как с машинами. Есть же трехколесные, а вот почему-то я в жизни только одну видел. Более того, если вы  прочитаете вышерасположенные ссылки на википедию, внизу страница, по ссылке перейдете на  ресурсы на которые они ссылаются и в случае если это ссылка на форум, то почитаете обьемный срач. К примеру субъектно-оринетированное программирование. Зацепились языками, что-то доказывали друг другу, обвинили друг друга в некомпетентности и неккоректном доказательстве теоремы Ферма. Последнее изменение страницы в 2007 году. Видимо тогда же этот подход программирования и заглох. Вот и так со всеми остальными. Это из очень узких областей, для очень серьезных людей с IQ около 200. Для них это удобно и эффективно, а для большинства просто есть и особо не нужно.

И вот тут я вернусь к началу. Парадигма это общепринятые нормы…. Если нормы отрицают 90% участников они как бы не общепринятые. Это больше смахивает на эффект следования академическим парадигмам.  У тех у кого спрашиваем будет только один ответ: Это хорошо! Потому что нам так сказали. Сказать иначе,  означает выставить себя в невыгодном свете. Проиллюстрирую:

— Вася привет, ты знаешь автоматное программирование?
— Нет.
— Фу, лошара, это же крутая вещь, там и дискретка и матан. Не хватило ума выучить?
— Да как то не нужно было! (бля, в следующий раз буду говорить что знаю и надо прочитать в википедии).

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

 

Комментариев нет

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *