Почему Erlang и другие языки программирования функций не являются родными c / c ++?

Я — строгий программист на родном языке, недавно изучающий Erlang, и мне интересно, почему люди не используют c / c ++, чтобы напрямую реализовывать свои собственные функции / модули и запускать его нативно? И это не очень сложно реализовать даже с хорошей масштабируемостью. Вот мои мысли:

  1. Любые функции в функциональном языке программирования принимают некоторые входные данные и генерируют некоторые выходные данные. Это может быть легко сделано в c / c ++ путем создания небольших программ (.exe). Каждый исполняемый файл имеет свое имя в формате name_version.exe и принимает один файл в качестве входных данных и создает другой файл в качестве выходных данных.

  2. Программный вызов — не что иное, как создание временного входного файла, вызов самого обновленного файла .exe и ожидание результата.

  3. Удаленный вызов функции на языке программирования функций может быть реализован путем создания серверной программы на каждом сервере, принятия запросов в виде (путь к исполняемому файлу + » + входные параметры), после чего сервер начинает искать последнюю версию исполняемого файла в своем локальные копии, вызовите его как новый процесс и отправив обратно результаты в потоке TCP.

  4. Масштабируемость может быть реализована путем создания программы мониторинга на каждом сервере, возвращающей текущие состояния (% cpu,% mem), и отправки сообщений UDP для периодического информирования других серверов. Так что каждая .exe-программа может с умом выполнять RPC на незанятых серверах.

  5. Обновление приложения так же просто, как копирование новых .exe-файлов с увеличением номера версии. И старые файлы .exe не будут удалены или могут быть удалены вручную.

Таким образом, в целом программирование функций, кажется, является чем-то, что решает проблему масштабируемости. И проблема масштабируемости часто возникает в ситуации, когда у одной машины есть определенное узкое место на процессоре, памяти, жестком диске и т. Д. Однако, если программирование функций недостаточно эффективно, это не будет истинным решением проблемы масштабируемости. Только представьте, что нативная программа работает в 20 раз быстрее, чем программа, написанная на языке программирования функций, и использует в 10 раз меньше памяти. И это похоже на то, что у вас есть 20 машин, работающих вместе, но все эти машины не могут даже превзойти ни одну машину с собственным кодом.

0

Решение

Выдержка из Почему функциональное программирование имеет значение Джон Хьюз:

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

Также проверьте это: Функциональное программирование и нефункциональное программирование

Еще лучше ссылка на @ zxq9: Модель актера: почему эрланг особенный? Или зачем вам нужен другой язык?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]