LINUX.ORG.RU

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

 ,


2

4

Заранее прошу прощения за то, что не в Talks, а сюда. Так получается, что теперь в Talks просто так постить нельзя, нужна некая карма и я должен «страдать» (Почему я не могу писать в раздел Talks? (комментарий)). Я в упор не помню данные своего старого аккаунта. Зарабатывать карму здесь и сейчас у меня нет ни времени, ни возможности, ни необходимости. Почему сюда, а не на другие форумы? Потому что считаю, что здесь обитают люди, которые смогут ответить на вопросы ниже и, возможно, даже, которые застали те самые времена (если конечно те самые люди ещё здесь).

Всем доброго времени суток! Не срача ради, а понимания для. Хочется понять историчность и почему так произошло. Понятно, что сейчас уже стали внедрять функциональные фичи много куда (в те же Java, C++, C# и т.д.). Стало появляться много функциональных языков (в том числе совсем новых). Но почему спустя столько времени? Почему спрашиваю:
- Functional programming has its origins in lambda calculus, a formal system developed in the 1930s (!!!) to investigate computability, the Entscheidungsproblem, function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus (отсюда: https://en.m.wikipedia.org/wiki/Functional_programming);
- Lisp появился ажно в 1958 году;
- после лиспа ещё была целая куча функциональных языков (APL, IPL, ML, Miranda, Erlang, etc.);
- C++ в 1985;
- Haskell в 1990;
- Java в 1995;

Сама идея ООП (и то я так понял весьма размытая, каждый понимал (и, кстати, по-моему до сих пор понимает) по-своему) вроде как витала со времени создания самого лиспа, но до конкретных реализаций она добралась ближе к концу 80-х - начала 90-х годов.
(поправьте меня, если не прав)
И это ещё при всём при том, что ФП имеет под собой весьма конкретный математический базис (чего я, пожалуй, не могу сказать про ООП).
Я так понял, что благодаря таким крупным компаниям как Microsoft, Oracle...
Но почему они так сильно повлияли на развитие этих технологий и как именно они это сделали я, честно говоря, не совсем понимаю.
Ок, ладно, тогда железо было не такое как сейчас, памяти было маловато для нормального существования функциональных языков на x86 платформе.
Но ведь была же та же, например, Symbolics, которая вроде бы весьма активно продавала лисп-машины?
Ок, Symbolics развалилась благодаря неблагоприятному стечению обстоятельств и «эффективным» манагерам, но их наработки оказались никому не нужны что ли?
И опять-таки, когда нужное железо появилось почему выбор этих и других крупных компаний пал именно на эти языки?
Почему не на функциональные языки?
Потому что в то время функциональные языки в основном использовались сугубо в академической среде или как?
Или если перефразировать всё вышесказанное словами моего коллеги: «если всё так круто (про ФП), то почему оно ещё не захватило рынок?»

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

Весь рантайм питона, js’а, руби, луа и прочей скриптухи и даже джавы построен на С/С++.

Весь рантайм Red построен на Red/System. Компилятор Red/System собирается REBOL/Core 2.7 (селф-хостинга пока нет). На чём был написан компилятор REBOL 2.7 в 2011 году? Вестимо, на предыдущих версиях REBOL. На чём была написана самая первая версия REBOL, которая не умела селфхоститься? На C. Но это был, если не ошибаюсь, 1999 год. То бишь по сути C ещё с 1999 года не нужен.

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

Весь рантайм Red построен на Red/System.

Когда я писал за фортран, я подразумевал, что есть несколько ЯП, чей рантайм не зависит от сишки, но (почти?) весь мейнстрим - надстройки над сишкой.

То бишь по сути C ещё с 1999 года не нужен.

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

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

Когда я писал за фортран, я подразумевал, что есть несколько ЯП, чей рантайм не зависит от сишки, но (почти?) весь мейнстрим - надстройки над сишкой.

Мейнстрим потому и мейнстрим, что на него ориентироваться бесперспективно, если не хочешь остановиться в развитии и топтаться на месте.

кучу софта, в том числе библиотек, никто не будет переписывать с си на что-то другое.

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

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

Тем не менее, ядра имеются и на Forth, и на Rust написанные. И даже на Lisp.

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

Мейнстрим потому и мейнстрим, что на него ориентироваться бесперспективно

Мейнстрим решает практические задачи с предсказуемыми затратами ресурсов. Нельзя это недооценивать.

arturianec100
()
Ответ на: комментарий от rebforce

На чём был написан компилятор REBOL 2.7 в 2011 году? Вестимо, на предыдущих версиях REBOL. На чём была написана самая первая версия REBOL, которая не умела селфхоститься?

А первый компилятор паскаля был написан на фортране.

То бишь по сути C ещё с 1999 года не нужен.

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

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

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

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

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