Сходимость математики и языков программирования

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

while ( my ($key,$val) = each %a_hash ) {
    print "$key => $val\n";
    last if $val; #exits loop when $val is true
}

# but "each" hasn't reset!!
while ( my ($key,$val) = each %a_hash ) {
    # continues where the last loop left off
    print "$key => $val\n";
}

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

6
задан jessecurry 19 October 2009 в 14:33
поделиться

4 ответа

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

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

Относительно ваших конкретных вопросов.

Каковы преимущества моделирования? языки программирования или язык особенности по математике? Каковы преимущества моделирования языка на принципах формальной логики?

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

Может ли язык общего назначения отказаться от логика или математика?

Зависит от того, что вы имеете в виду под словом «отказаться». У вас может быть язык без математических операций (хотя вы должны быть довольно экзотерическими; я могу думать только о машинах Тьюринга, у которых даже нет приращения или декремента), и вы, безусловно, можете иметь язык, который не заботится о формализмах ( Ассемблер, C). Но я не думаю, что возможно иметь язык программирования без логики (хотя это может быть извращенная логика, см. Malbolge )

Какие языки действительно демонстрируют преимущества любого

Что ж, если вы считаете лямбда-исчисление формой логики, то Лисп довольно хорошо демонстрирует свои преимущества, будучи с 1958 года языком, выразительной силы которого другие языки стремятся (но не могут) достичь.

То есть' s Prolog, единственный известный мне «серьезный» язык, который пытается быть явно основанным на формальной логике. И - quelle сюрприз - он хорош в логике и немногое еще.

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

Нет. Неудача Lisp Machines довольно убедительно доказывает IMO, что компиляторы + общее оборудование более мощные, чем специализированное оборудование. Однако можно сказать, что простая грубая сила сегодняшней системы делает языки, полностью игнорирующие аппаратные ограничения, практичными там, где раньше они не были.

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

Нет. Неудача Lisp Machines довольно убедительно доказывает IMO, что компиляторы + общее оборудование более мощные, чем специализированное оборудование. Однако можно сказать, что простая грубая сила сегодняшней системы делает языки, полностью игнорирующие аппаратные ограничения, практичными там, где раньше они не были.

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

Нет. Неудача Lisp Machines довольно убедительно доказывает IMO, что компиляторы + общее оборудование более мощные, чем специализированное оборудование. Однако можно сказать, что простая грубая сила сегодняшней системы делает языки, полностью игнорирующие аппаратные ограничения, практичными там, где раньше они не были.

8
ответ дан 9 December 2019 в 20:45
поделиться

since computer science is a special branche of math - there is no convergence of math and programming language. A programming language is applied math. It's a tool created by people with profound knowlege of math to be used by others (most of the time with less profound knowledge). You can compare it to a light switch - you can use it without having studied physics but still it is applied physics. Sometimes (especially if you have a problem) it is necessary to have the "knowledge". Then you need the special background.

2
ответ дан 9 December 2019 в 20:45
поделиться

Ну, честно говоря, многие из этих так называемых «современных языков программирования» просто воплощают то, что было в различных языках программирования более 50 лет.

1
ответ дан 9 December 2019 в 20:45
поделиться

Каковы преимущества моделирования языков программирования или языковых функций в математике? Каковы преимущества моделирования языка на принципах формальной логики?

Это одно и то же: формальная логика - это всего лишь раздел математики. Два основных преимущества использования формальной математики - это оптимизация и безопасность. Когда алгоритм не имеет побочных эффектов (то есть ссылочно прозрачный) и выражается исключительно с использованием чистой математики, компиляторы могут реструктурировать алгоритм в соответствии с правилами математики. Это упрощает компиляторам оптимизацию кода и использование параллельных архитектур. Еще одно важное преимущество - возможность доказать определенные свойства кода.

Может ли язык общего назначения отказаться от логика или математика?

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

Какие языки действительно демонстрируют преимущества любого подхода?

Haskell, ML, OCaML, Miranda, Alice, Oz, Erlang, Twelf, Coq, Prolog - все они демонстрируют более строгие приложения математики к программированию .

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

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

1
ответ дан 9 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: