Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Erlang  (Прочитано 13363 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 24-10-2012 05:17 » 

подскажите вменяемый самомучитель на русском по языку Erlang Улыбаюсь

имеется книга на английском в виде pdf , но при освоении нового для меня языка английский взрывает мозг (чай не MSDN читать) , тем более, что чтение обычно приходится на вечер. Нашёл несколько русских вводных статей - лишь по основам. Но даже оттуда бульше воспринял, чем с английского текста




* erlang.PNG (227.99 Кб - загружено 1360 раз.)
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 24-10-2012 05:39 » 

https://groups.google.com/forum/#!forum/russian-armstrong-erlang

Надо, Леш, еще к английскому и Гугль осваивать. Ага
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 24-10-2012 05:56 » 

Проглядел вскользь. Глава 2:
Цитата
Одиночное присвоение подобно школьной Алгебре

Когда я ходил в среднюю школу мой учитель математики говорил нам: "Если есть несколько Х в разных частях одного уравнения, все эти Х означают одно и то же". Именно поэтому мы можем решать уравнения: если мы знаем, что Х+У=10 а X-Y=2, то Х будет 6, а У будет 4 в обоих этих уравнениях.

Но когда я стал изучать мой первый язык программирования мы увидели вот такую фигню:
Х=Х+1

Мы все протестовали, говорили "так нельзя делать!", но учитель программирования сказал, что мы неправы и должны забыть все, что мы изучили на математике. Х теперь это вовсе не математическая переменная. Она теперь такая ячейка, подобная маленькой коробочке...

В Эрланге переменные точно такие же, как и в математике. Когда вы присваиваете им значение, вы делаете утверждение - заявляете о непреложном факте. Эта переменная имеет именно это значение. И никак иначе.

Бездумное объяснение. Просто надо не выдумывать новые названия, а вдуматься в существующую терминологию. "Переменная" — то, что можно менять. Выше упомянутые X и Y из системы уравнений не являются переменными, они — "неизвестные [значения]", которые в процессе решения надо найти. "Х" — это буква и не несет в себе строгого смысла, хотя нас все детство убеждали в обратном.

Дальше идет еще больший бред про "переменные". Как по этому можно изучать язык?
« Последнее редактирование: 24-10-2012 06:05 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 24-10-2012 06:29 » 

RXL, но слово "переменная" - математическое; просто его программисты прихватизировали и переиначили. "Неизвестное" - это скорее искомое решение в уравнении, что не вполне соответствует смыслу в Prolog, где встречаются и неиспользуемые (безразличные) переменные - неискомые, обозначаемые подчёркиванием.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 24-10-2012 06:35 » 

RXL, та, может, и надо )  Спасибо, я ничего вменяемого не нашёл сам. Дома заценю

Добавлено через 5 минут и 12 секунд:
Ром, насчёт переменных - там не совсем привычно всё (особенно мне после C++) , и переменных на самом деле нет )  Есть только константы. Этот момент я уже выяснил и уяснил.  Присваивания тоже нет, есть констатация факта, что, к примеру,

C=7
A+3 = C+8

откуда следует,  что константа C равна 7, а константа A равна 12
« Последнее редактирование: 24-10-2012 06:40 от Алексей++ » Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 24-10-2012 07:02 » 

И функция f() (видимо от flush) сбрасывает привязку имен к константам. Также выход из функции уничтожает связанные в ней имена. Чисто линейное программирование, или, говоря русским языком, большой и шибко умный калькулятор, при написании мануалов к которому можно не один диссер написать. Не могу понять, какое у него позиционирование, зачем он нужен.
« Последнее редактирование: 24-10-2012 07:04 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 24-10-2012 07:30 » 

синтаксис, надо сказать, простой. Только глаз и руку набить надо, чтобы читать его. Всё остальное решается суперудобной работой с кортежами, списками, "Переменными" и рекурсией, насколько я уже смог понять Улыбаюсь
Плюс заточка на многопоточные вычисления "без проблем" (причём потоки могут выполнятся на разных машинах. Но до этого момента я ещё не дошёл, только читал про эту возможность)
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 24-10-2012 08:26 » 

RXL, параллельные вычисления. Чтобы эффективно параллелить, нужно избавиться от состояний (т.е. от переменных как ячеек памяти, когда в один момент времени из переменной можно прочитать одно, а в другой момент уже другое). Где есть состояния, вынужденно возникает синхронизация, что приводит к остановке параллельных процессов и снижению производительности системы.

Так что Erlang - это скорее функциональное программирование; просто синтаксис Prolog'а.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 24-10-2012 11:21 » 

Леш, если под "суперудобной работой" ты сравниваешь с C++, то замечу, что почти в любом скриптовом языке это давно есть и пользоваться действительно очень удобно.

Дим, любую функцию без сохранения внутреннего состояния между вызовами (в контексте C++ читай: без применения статических и глобальных переменных) можно безопасно параллелить, в том числе распределять однотипные задания по разным машинам.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 24-10-2012 13:54 » 

Цитата: RXL
Дим, любую функцию без сохранения внутреннего состояния между вызовами (в контексте C++ читай: без применения статических и глобальных переменных) можно безопасно параллелить
Нет. В любой хоть сколь-нибудь сложной программе изрядное количество данных сидит в куче, а сама программа работает с указателями. Такие структуры в куче - тоже глобальные. Если их копировать по любому поводу, то сильно упадёт производительность, и придётся изрядно извращаться с управлением контекстом. C++ по своему синтаксису неудобен для всего этого. Не говоря уже об организации ленивых вычислений и всяких редукций цепочек вызовов в С++. Если же использовать примитивы, то это будет написание на C++ движка функционального языка - смысла нет огород городить.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 24-10-2012 14:54 » 

Рома, почитай, и ты поймёшь, что я имел в виду ))

Начал читать - вроде бы ничего переведено. Только там ещё не все главы переведены.

Попытался я распечатать книгу, итак то принтером раз в год пользуемся ))  Снегурочка кончилсь на 6 главе. Ну пока хватит )
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 24-10-2012 15:42 » 

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

А зачем копировать? Константные указатели и т.п. способы ограничения. Ведь Эрланг нам именно это предлагает — статический контекст.
А на счет "удобства" C++ согласен: по сравнению со скриптовыми языками он — мастодонт на сотне подпорок.

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

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 24-10-2012 19:01 » 

Цитата: RXL
А зачем копировать? Константные указатели и т.п. способы ограничения. Ведь Эрланг нам именно это предлагает — статический контекст.
Константный указатель запрещает менять сам указатель, но не память по указателю. Константным должно быть всё, а любое изменение - через копирование с замещением. Именно поэтому любое изменение - это точка fork (принцип ветвящихся вселенных), и параллелизм становится максимально возможным для данной структуры кода.

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

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 24-10-2012 20:34 » 

Прочитал несколько глав.
И эти люди запрещают мне ковыряться в носу не любят Perl...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 25-10-2012 03:31 » new

Леш, на мой взгляд перевод тянет на черновой. Жуткий стиль. Зато бесплатно.
он и так черновой  - куча опечаток. Но стиль - от автора, а читается довольно хорошо

Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines