Ответы пользователя по тегу Языки программирования
  • Что такое парадигмы программирования?

    @alexanius
    В двух словах это набор базовых принципов (мат. модели, например), на которой работает язык программирования. Сейчас наиболее широко используются три парадигмы: императивная, функциональная и логическая.

    Императивная основана на мат. модели машин Тьюринга. Особенность данной парадигмы в том, что программист чётко, шаг за шагом описывает изменения состояния программы (алгоритм), который компьютер в точности выполняет. Внутри данной парадигмы широко используются процедурный стиль (язык C) и объектно-ориентированный стиль (язык Smalltalk как яркий представитель).

    Функциональная парадигма основана на мат. модели лямбда-исчисления Чёртча. В ней программы представляют из себя вычисление функций именно в их математическом понятии. Здесь (в идеале) нет глобального состояния программы и от него ничего не должно зависеть. Функции не должны иметь побочных эффектов (pure), а данные стараются делать неизменяемыми (immutable). Наиболее яркий представитель - Haskell.

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

    А вообще по теме парадигм есть неплохая глава в книге Сошникова Д.В. "Парадигма логического программирования"
    Ответ написан
    Комментировать
  • Почему реализовать C настолько сложно?

    @alexanius
    Язык Си очень сложный и написать его нормальную реализацию - весьма нетривиальная задача.

    При написании фронтенда встаёт задача во-первых правильно его распарсить. А с точки зрения построения парсера, Си далеко не самый простой язык. Готовой BNF грамматики для него Вы не найдёте. Плюс необходимо поддерживать пол десятка разных стандартов.

    Далее нужно продумать что и как ВЫ будете отдавать в мидленд. Т.е. нужно спроектировать представление, с которым будет удобно работать оптимизациям, которое будет отображать как можно больше особенностей языка, но при этом не будет слишком сложным.

    Нужно сделать обработку и вывод ошибок. Например в edg (промышленный фронтенд) разных сообщений об ошибках 2500.
    Ответ написан
    5 комментариев