Search
Write a publication
Pull to refresh
11
0.1
middle @middle

Пользователь

Send message
Да ладно вам. Один IT-журналист (не помню деталей) написал, сославшись на статью в ZDNet, написал, что Линус Торвальдс сменил Linux на Apple (и дал ссылку на статью). Хотя в статье было чёрным по белому написано, что Линус сразу же поставил туда Linux. На моё письмо тот журналист не отреагировал. А тут вообще журналист-общественник. :D
1. Ну почитайте, например, Why Functional Programming Matters. Не книга, а статья, но должно хватить. Есть перевод на русский, но я его не читал и о качестве не могу судить.

А разве вам самим не очевидно, что при вычислении (2+3)*(4+5) всё равно, что вычислять вначале — 2+3 или 4+5?

2. То, что функциональные языки исполняются на императивных процессорах — это просто констатация факта. Компиляция функциональных программ для эффективного выполнения на императивных архитектурах — это очень интересная и важная задача. Что вас так возбудило, я не понимаю.

3. Порядок операций может изменяться настолько, насколько сохраняется семантика программы. В функциональных языках пространства для манёвра куда больше.

4. printf — это пример функции, возвращаемое значение которой в 99% вызовов игнорируется (а возвращает она вовсе не void, JFY). Конечно, в C ничего выкидывать нельзя. Я лишь проиллюстрировал оптимизацию, которая в невозможна в функциональных языках. Насчёт передачи по ссылке — я вас не понимаю. В функциональном языке значения могут передаваться как по ссылке, так и по значению, как решит компилятор. Изнутри программы вы разницу не обнаружите. Причём тут отсутствие переменных, я не понимаю.

5. Оптимизатор — это одна из самых существенных и самых сложных компонент современных компиляторов. Отделить "оптимизатор" от компилятора невозможно.

6. Последовательность выполнения операций зависит от исходных данных в любом невырожденном языке программирования (подумайте об if, switch/case и т.п.). И кстати о логических языках: при выполнении программы правила программы рассматриваются средой выполнения в строго заданном порядке. Потому что если поменять два правила местами, программа зацикливается... Никогда не наблюдали такого при программировании на Прологе? А я наблюдал.

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

Функциональные языки с этим справляются. Например, в том же Haskell функции, которые имеют побочные эффекты, имеют особый тип. Эти функции объединяют операции в цепочку, которую потом выполняет окружение. Чистая функция не может обратиться к "нечистой", потому что у неё нет доступа к началу этой цепочки — ведь данные передаются через аргументы, а тип разный...
Ну если вам так хочется — пожалуйста :)
Можно и на C в объектном стиле писать (см. GTK), и на ассемблере, но объектным они от этого не становятся.
Себеста не в теме :) Пусть он ознакомится с ленивым функциональным языком Haskell и скажет, в какой последовательности выполняются там функции, это раз. Во-вторых, в чистых функциональных языках компилятор при синтезе объектного кода (раз уж программа выполняется на императивном процессоре) сам планирует, в какой последовательности всё выполнять. Что-то может выкинуть, если обнаружит, что результат не используется. Представьте себе компилятор C, который выкинет вызов printf, возвращаемое значение которого не используется :D

В-третьих, Лисп — не строго функциональный язык, а мультипарадигмный, как Python и JavaScript. И те строки, которые вы привели, как раз используют императивные фичи Лиспа.

А теорема Чёрча-Россера гласит о том, что если мы вычисляем лямбда-выражение в двух разных порядках оба вычисления выдают результат (а не зацикливаются), то результат будет одинаковым.
И как же в функциональных языках указывается последовательность?

Теорему Чёрча-Россера знаете?
IronPython — это реализация языка Python для .NET. Python — ни разу не функциональный язык. Там даже лямбд нормальных нет, а то что есть, грозятся выкинуть (а может, уже выкинули, я не слежу). Python — язык с динамической типизацией, F# со статической типизацией.

Достаточно?
Вы не в тот столбик смотрите.
1. Может быть. Но разработчики ATLAS считают иначе.
2. По поводу P.S. Высказывание, конечно, верное, но почитайте, что написано об опциях -ffloat-store и -ffast-math. Компилятор может такого наоптимизировать, что вместо результата будет погода на Марсе.
Не, я какой-то сайт видел. Нечто вроде http://www.googlesuck.com/
Но и общество сойдёт, спасибо. Жаль только, что оно пустое :D
И чем он лучше tkabber? :D
Сообщество врагов Гугл есть, но по другому поводу :)
Увы, ссылку не нашёл.
Видимо, тут эффект «Неуловимого Джо».
Вот засада :)
Конечно, редизайном сайта это излечится, но стоит ли...
Я собираюсь делать нечто аналогичное.
Правда, в свободное от безделья время, поэтому сроков нет.
class GMarkerManager
Попросите автора вставить map.enableScrollWheelZoom();
:)
Мне больше всего помогли
http://econym.googlepages.com/index.htm
http://mapki.com
Но самое главное &mdsah; описание API. Там правда всё просто :)
С другой стороны, это может ограничить портабельность самого компилятора...

Information

Rating
3,815-th
Location
Barcelona, Barcelona, Испания
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior