avva: (Default)
avva ([personal profile] avva) wrote2009-09-29 06:51 pm

программистское

Очень интересная беседа-интервью Джо Армстронга (Erlang) и Саймона Пейтона Джонса (Haskell). Формат транскрипта на этом сайте мерзостный, но нормальный транскрипт можно прочитать здесь.

Цитата:
JA: I didn't really know what thread safety was in Java, so I wrote a little Java Swing thing and of a Java friend I asked: I wrote this Java process and it worked fine. I could create one window, and then I created 2 windows in a graphical program and I drew a rectangle in one and I drew a rectancle in the other and it crashed. And I said "Why did it crash?" And he said "Well the Swing library's not threadsafe". Now, what does that mean? It means if you got one thing that works, you do 2 of them in parallel, they interact in strange ways. I thought "How can you program like that? It's impossible to program!"

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

[identity profile] anril.livejournal.com 2009-09-29 04:59 pm (UTC)(link)
что меня недавно удивило, так это то что на эрланге оказалось написано гораздо больше вещей, чем кажется невооруженным глазом. к примеру, мессаджинг на фэйсбуке или github.

[identity profile] avva.livejournal.com 2009-09-29 05:03 pm (UTC)(link)
github разве не на руби?
Edited 2009-09-29 17:03 (UTC)

(no subject)

[identity profile] anril.livejournal.com - 2009-09-29 17:04 (UTC) - Expand

(no subject)

[identity profile] avva.livejournal.com - 2009-09-29 17:07 (UTC) - Expand

(no subject)

[identity profile] levgem.livejournal.com - 2009-09-30 06:41 (UTC) - Expand

[identity profile] meshko.livejournal.com 2009-09-29 05:38 pm (UTC)(link)
На Эрланге живут очень большие и серьёзные штуки, вроде телефонных маршрутизаторов и бирж.
Я его планирую поковырять уже лет 6...

(no subject)

[identity profile] dimrub.livejournal.com - 2009-09-29 18:03 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:45 (UTC) - Expand

[identity profile] nm-work.livejournal.com 2009-09-29 05:46 pm (UTC)(link)
ага :) и часть вещей тщательно шифруется, что оно на эрланге :) чисто в коммерческих интересах.

[identity profile] nec-p1us-u1tra.livejournal.com 2009-09-29 05:06 pm (UTC)(link)
Всем он хорош, но эта манера бежать внутри виртуальной машины со своими процессами вместо собраться в обычный бинарник 8/

[identity profile] nm-work.livejournal.com 2009-09-29 05:46 pm (UTC)(link)
чем она вам мешает? :)

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 21:39 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 22:06 (UTC) - Expand
wizzard: (Default)

[personal profile] wizzard 2009-09-29 09:19 pm (UTC)(link)
И огрести все прелести взаимодействия с зоопарком ОС.

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 21:39 (UTC) - Expand

(no subject)

[personal profile] wizzard - 2009-09-30 02:05 (UTC) - Expand

[identity profile] nm-work.livejournal.com 2009-09-29 05:48 pm (UTC)(link)
сейчас делаю аудит кода на эрланг.

есть куски кода, которые на любом другом языке программирования представляли бы для себя ошибку безопасности. на эрланг - тупо приводят просто к crash данного процесса, что совершенно штатная ситуация. упал? молодетц. запись в лог - пользователю стандартную ошибку, процесс - либо перезапустить, либо просто забить.

манера программирования - let it crash - она очень сильно спасает ;) даже в "грязно" написаном коде.

[identity profile] prosto-tak.livejournal.com 2009-09-29 07:04 pm (UTC)(link)
Это как-то совершенно непонятно. Что значит "let it crash"? You can "let it crash" in any language, but what's the point?

(no subject)

(Anonymous) - 2009-09-29 19:12 (UTC) - Expand

(no subject)

[identity profile] prosto-tak.livejournal.com - 2009-09-29 19:15 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:23 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:29 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:33 (UTC) - Expand

(no subject)

[identity profile] levgem.livejournal.com - 2009-09-30 06:46 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-30 13:41 (UTC) - Expand

(no subject)

[identity profile] levgem.livejournal.com - 2009-09-30 13:42 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-30 14:01 (UTC) - Expand

(no subject)

[identity profile] levgem.livejournal.com - 2009-09-30 15:14 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-30 13:45 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:38 (UTC) - Expand

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-29 19:19 (UTC) - Expand

(no subject)

(Anonymous) - 2009-09-29 19:19 (UTC) - Expand

[identity profile] skavish.livejournal.com 2009-09-29 05:52 pm (UTC)(link)
в приведенной цитате при всем уважении к JA написана какая то чушь. любой более менее знакомый со swing'ом или просто UI программированием это сразу видит.

[identity profile] raydac.livejournal.com 2009-09-29 06:17 pm (UTC)(link)
+1
че то лажа какая то, свинг - однопоточная штука что бы как раз траблов и не было

[identity profile] meshko.livejournal.com 2009-09-29 09:05 pm (UTC)(link)
Да, я не припомню ни одной UI библиотеки, которая была бы thread-safe, и это логично. Но насколько я понимаю, он всё же не чушь сказал -- в Эрланге идея в том, что все потоки говорят друг с другом только через сообщения и никакой лабуды с общей памятью и thread-safety быть не может. То есть чушь только в том смысле, что направлено лично против Явы, тогда как должно быть против стандартной парадигмы программирования потоков с мьютексами и прочими ужасами.

(no subject)

[identity profile] skavish.livejournal.com - 2009-09-29 21:30 (UTC) - Expand

[identity profile] dimrub.livejournal.com 2009-09-29 06:05 pm (UTC)(link)
Вот и отлично, потом ведь сделаешь семинар, правда? :)

Скажи, а на J ты смотрел? Я тут развлекаюсь на eulerproject.net, там многие им балуются, выглядит страшновато, но любопытно, что за зверь.

[identity profile] antilamer.livejournal.com 2009-09-29 06:44 pm (UTC)(link)
J - полная жесть. Где-то год время от времени пытался его выучить, так ничего и не получилось толком. Сдался, когда не смог написать на нем волновой алгоритм на прямоугольной сетке без помощи циклов (а с помощью циклов казалось, типа, не круто).
Но ооочень красиво, и полезно прочитать его vocabulary с примерами, чтобы просто проникнуться тем, "как еще можно писать программы" и "в терминах чего еще их можно выражать" - это может пригодиться и за пределами J.

[identity profile] onodera.livejournal.com 2009-09-29 07:09 pm (UTC)(link)
J, по-моему, специально спроектировали так, чтобы писать на нём было максимально трудно. Все глаголы (команды) состоят либо из одного, либо из двух знаков препинания, причём хоть какая-то мнемоника пропадает где-то на двадцатом. Но и это ещё не всё, как говорят в телемагазинах.
Если прикинуться дурачком и начать делать свои глаголы, то с каждым новым производительность будет падать, особенно если это переименованный примитив. Поэтому разработчики очень гордятся своим tacit programming, то есть превращением подпрограммы, а то и всей программы, в одну длинную функцию. Формула Герона выглядит вот так: [:%:[:*/-:@:(+/)-0,]
Поэтому я изучаю вместо J Q.

(no subject)

[identity profile] dimrub.livejournal.com - 2009-09-29 19:11 (UTC) - Expand

(no subject)

[identity profile] onodera.livejournal.com - 2009-09-29 19:52 (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2009-09-29 21:26 (UTC) - Expand

(no subject)

[identity profile] dimrub.livejournal.com - 2009-09-29 21:59 (UTC) - Expand

(no subject)

[identity profile] gianthare.livejournal.com - 2009-09-30 07:51 (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2009-09-30 08:03 (UTC) - Expand

[identity profile] avva.livejournal.com 2009-09-29 10:39 pm (UTC)(link)
Немного стремно продолжать делать семинары по языкам, которые я на самом деле знаю очень поверхностно :) посмотрим.

На J равно как и K уже года четыре хочу посмотреть, пока нет.

[identity profile] xxqs.livejournal.com 2009-09-29 07:32 pm (UTC)(link)
да мало ли однопоточных вещей, от языка это мало зависит. libxml2, например, тоже не тред-сейф

Возможно и не связано с вышеупомянутым...

[identity profile] greps.livejournal.com 2009-09-29 08:02 pm (UTC)(link)
Из Спольского - См. полностью

"...One principle duct tape programmers understand well is that any kind of coding technique that’s even slightly complicated is going to doom your project. Duct tape programmers tend to avoid C++, templates, multiple inheritance, multithreading, COM, CORBA, and a host of other technologies that are all totally reasonable, when you think long and hard about them, but are, honestly, just a little bit too hard for the human brain."
(http://www.joelonsoftware.com/items/2009/09/23.html)
()

Re: Возможно и не связано с вышеупомянутым...

[identity profile] cmm.livejournal.com 2009-09-29 09:34 pm (UTC)(link)
удивительное дело: если сделать пару-тройку глобальных подстановок (s/duct tape/sane/g и s/too hard for the human brain/too error-prone/g, для начала), то статья напрочь перестаёт быть флэйм-бэйтом и становится правдивой и совершенно неинтересной.

надо хорошенько освоить инверсию этой технологии и начать зашибать бабки и славу в интернетах!

Re: Возможно и не связано с вышеупомянутым...

[identity profile] nm-work.livejournal.com 2009-09-29 09:43 pm (UTC)(link)
:))))) мы в проекте внедрили-таки RPC calls и заставляли разные слои приложения сидеть в разных виртуальных машинах и общаться друг с другом только через RPC (JSON/XML-RPC).

да, чуть усложнило в начале работу, но потом - 1) был отлично отслеживаемый протокол взаимодействия компонент, 2) создание каждого слоя можно отдать отдельному разработчику 3) многослойная система security рулит - потому что даже при ошибках в одном слое трудно пробиться через следующий :)))))

Re: Возможно и не связано с вышеупомянутым...

[identity profile] dimrub.livejournal.com 2009-09-29 10:00 pm (UTC)(link)
Keep things as simple as possible - but no simpler.

[identity profile] pingva.livejournal.com 2009-09-29 11:40 pm (UTC)(link)
prag-prog'овская книжка прикольная по erlang'у.

мне оч. понравился язык, но вот надо бы придумать задачу, какую-нибудь multi-actor симуляцию распределенную, чтоб осмысленность была =) На работе на нем никто не даст писать, понятно. (тебе, я так понимаю, тоже =))

[identity profile] msh.livejournal.com 2009-09-30 12:38 am (UTC)(link)
У меня первое впечатление от erlang было как вот когда я в первый раз узнал про regexp-ы и что можно не писать страницу циклов и strtok(), а все сделать за минуту одной строчкой.

Так вот с erlang я без труда в своей программе за час попробовал несколько вариантов concurrency и все работали! Без долгих размышлений - а вот тут нужен mutex, а тут соединить через очередь, а что делать если этот thread закончился, а тот еще не стартовал и не знает что должен открыть сокет снова.

[identity profile] meshko.livejournal.com 2009-09-30 02:56 am (UTC)(link)
Хм. Мне всегда казалось, что пользоваться regexp в таком виде (чтобы заменять циклы и strtok) -- дурной тон. То есть типа как jwz сказал, Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. Вы не согласны?

Я спрашиваю, потому что у меня какое-то сложное отношение к ним. С одной стороны очень люблю и каждый день пользуюсь, и в программы люблю вставлять поиск или там rewrite rules на основе regexp, но вот когда доходит до того, чтобы в своем коде заменить цикл и strtok на regexp, меня всегда что-то останавливает.

(no subject)

[identity profile] nm-work.livejournal.com - 2009-09-30 13:49 (UTC) - Expand

[identity profile] dimmik.livejournal.com 2009-09-30 04:41 am (UTC)(link)
А вот scala еще бывает.
Довольно вкусно выглядит, я в данный момент пытаюсь внимательно интересоваться