| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | «  : 24-10-2012 05:17 »  |  | 
 
 подскажите вменяемый самомучитель на русском  по языку Erlang   имеется книга на английском в виде pdf , но при освоении нового для меня языка английский взрывает мозг (чай не MSDN читать) , тем более, что чтение обычно приходится на вечер. Нашёл несколько русских вводных статей - лишь по основам. Но даже оттуда бульше воспринял, чем с английского текста |  
						| 
								| 
 |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 :  24-10-2012 05:39 »   |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #2 : 24-10-2012 05:56 »  |  | 
 
 Проглядел вскользь. Глава 2: Одиночное присвоение подобно школьной Алгебре
 Когда я ходил в среднюю школу мой учитель математики говорил нам: "Если есть несколько Х в разных частях одного уравнения, все эти Х означают одно и то же". Именно поэтому мы можем решать уравнения: если мы знаем, что Х+У=10 а X-Y=2, то Х будет 6, а У будет 4 в обоих этих уравнениях.
 
 Но когда я стал изучать мой первый язык программирования мы увидели вот такую фигню:
 Х=Х+1
 
 Мы все протестовали, говорили "так нельзя делать!", но учитель программирования сказал, что мы неправы и должны забыть все, что мы изучили на математике. Х теперь это вовсе не математическая переменная. Она теперь такая ячейка, подобная маленькой коробочке...
 
 В Эрланге переменные точно такие же, как и в математике. Когда вы присваиваете им значение, вы делаете утверждение - заявляете о непреложном факте. Эта переменная имеет именно это значение. И никак иначе.
 Бездумное объяснение. Просто надо не выдумывать новые названия, а вдуматься в существующую терминологию. "Переменная" — то, что можно менять. Выше упомянутые X и Y из системы уравнений не являются переменными, они — "неизвестные [значения]", которые в процессе решения надо найти. "Х" — это буква и не несет в себе строгого смысла, хотя нас все детство убеждали в обратном. Дальше идет еще больший бред про "переменные". Как по этому можно изучать язык? |  
						| 
								|  |  
								| « Последнее редактирование: 24-10-2012 06:05 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #3 : 24-10-2012 06:29 »  |  | 
 
 RXL, но слово "переменная" - математическое; просто его программисты прихватизировали и переиначили. "Неизвестное" - это скорее искомое решение в уравнении, что не вполне соответствует смыслу в Prolog, где встречаются и неиспользуемые (безразличные) переменные - неискомые, обозначаемые подчёркиванием. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    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 | 
								|  | « Ответ #5 : 24-10-2012 07:02 »  |  | 
 
 И функция f() (видимо от flush) сбрасывает привязку имен к константам. Также выход из функции уничтожает связанные в ней имена. Чисто линейное программирование, или, говоря русским языком, большой и шибко умный калькулятор, при написании мануалов к которому можно не один диссер написать. Не могу понять, какое у него позиционирование, зачем он нужен. |  
						| 
								|  |  
								| « Последнее редактирование: 24-10-2012 07:04 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #6 : 24-10-2012 07:30 »  |  | 
 
 синтаксис, надо сказать, простой. Только глаз и руку набить надо, чтобы читать его. Всё остальное решается суперудобной работой с кортежами, списками, "Переменными" и рекурсией, насколько я уже смог понять   Плюс заточка на многопоточные вычисления "без проблем" (причём потоки могут выполнятся на разных машинах. Но до этого момента я ещё не дошёл, только читал про эту возможность) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #7 : 24-10-2012 08:26 »  |  | 
 
 RXL, параллельные вычисления. Чтобы эффективно параллелить, нужно избавиться от состояний (т.е. от переменных как ячеек памяти, когда в один момент времени из переменной можно прочитать одно, а в другой момент уже другое). Где есть состояния, вынужденно возникает синхронизация, что приводит к остановке параллельных процессов и снижению производительности системы.
 Так что Erlang - это скорее функциональное программирование; просто синтаксис Prolog'а.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #8 : 24-10-2012 11:21 »  |  | 
 
 Леш, если под "суперудобной работой" ты сравниваешь с C++, то замечу, что почти в любом скриптовом языке это давно есть и пользоваться действительно очень удобно.
 Дим, любую функцию без сохранения внутреннего состояния между вызовами (в контексте C++ читай: без применения статических и глобальных переменных) можно безопасно параллелить, в том числе распределять однотипные задания по разным машинам.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #9 : 24-10-2012 13:54 »  |  | 
 
 Дим, любую функцию без сохранения внутреннего состояния между вызовами (в контексте C++ читай: без применения статических и глобальных переменных) можно безопасно параллелить Нет. В любой хоть сколь-нибудь сложной программе изрядное количество данных сидит в куче, а сама программа работает с указателями. Такие структуры в куче - тоже глобальные. Если их копировать по любому поводу, то сильно упадёт производительность, и придётся изрядно извращаться с управлением контекстом. C++ по своему синтаксису неудобен для всего этого. Не говоря уже об организации ленивых вычислений и всяких редукций цепочек вызовов в С++. Если же использовать примитивы, то это будет написание на C++ движка функционального языка - смысла нет огород городить. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #10 : 24-10-2012 14:54 »  |  | 
 
 Рома, почитай, и ты поймёшь, что я имел в виду ))
 Начал читать - вроде бы ничего переведено. Только там ещё не все главы переведены.
 
 Попытался я распечатать книгу, итак то принтером раз в год пользуемся ))  Снегурочка кончилсь на 6 главе. Ну пока хватит )
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #11 : 24-10-2012 15:42 »  |  | 
 
 В любой хоть сколь-нибудь сложной программе изрядное количество данных сидит в куче, а сама программа работает с указателями. Такие структуры в куче - тоже глобальные. Если их копировать по любому поводу, то сильно упадёт производительность, и придётся изрядно извращаться с управлением контекстом. А зачем копировать? Константные указатели и т.п. способы ограничения. Ведь Эрланг нам именно это предлагает — статический контекст. А на счет "удобства" C++ согласен: по сравнению со скриптовыми языками он — мастодонт на сотне подпорок. Леш, на мой взгляд перевод тянет на черновой. Жуткий стиль. Зато бесплатно. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #12 : 24-10-2012 19:01 »  |  | 
 
 А зачем копировать? Константные указатели и т.п. способы ограничения. Ведь Эрланг нам именно это предлагает — статический контекст. Константный указатель запрещает менять сам указатель, но не память по указателю. Константным должно быть всё, а любое изменение - через копирование с замещением. Именно поэтому любое изменение - это точка fork (принцип ветвящихся вселенных), и параллелизм становится максимально возможным для данной структуры кода. Ещё одно правило, которое используется в параллелизме - это то, что одновременно с объектом может производиться только одно модифицирующее действие. Если объект разделяемый, то параллельный доступ к нему синхронизируется и упорядочивается (по шаблону много читателей-один писатель). Если объект неразделяемый, а копируемый, параллельно могут выполняться разные действия над разными копиями. |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #13 : 24-10-2012 20:34 »  |  | 
 
 Прочитал несколько глав.И эти люди
 запрещают мне ковыряться в носуне любят Perl... |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #14 : 25-10-2012 03:31 »  |  | 
 
 Леш, на мой взгляд перевод тянет на черновой. Жуткий стиль. Зато бесплатно.
 он и так черновой  - куча опечаток. Но стиль - от автора, а читается довольно хорошо |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |