Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Какой выбрать язык програмирования?

Автор: Mickey_from_nsk
Дата сообщения: 23.08.2006 12:02
XDiaBLo
Есть проект mono.
http://www.mono-project.com/Main_Page
Автор: Qraizer
Дата сообщения: 23.08.2006 12:53
Можно вопросик почти в тему? Отвечают ли дженерики условиям простейших машин (например, машины Тьюринга), как это имеет место для шаблонов С++? Другими словами - позволяют ли дженерики испольнить произвольный алгоритм на стадии компиляции?
Автор: Xarde
Дата сообщения: 23.08.2006 12:59

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

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


Цитата:
При этом, если уж действительно не втерпеж освободить ее (ну там огромная картинка оказалась нафиг не нужна), можно явно вызвать Garbage Collector. Он все и очистит.

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

Добавлено:

Цитата:
Можно вопросик почти в тему?

Я - пас. С Тьюрингом почти не дружу. В общем, самоучка и теорию почти не знаю, чего и стыжусь (незнания теории, а не самоучества ).
Автор: Mickey_from_nsk
Дата сообщения: 23.08.2006 13:14
Xarde

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

Судя по тому, что Java и .NET близнецы братья, то что-то такое или уже есть или скоро появится в Java.
В .NET сборщик мусора работает очень просто. Он сидит в низком приоритете, работает когда нет более приоритетных задач. Когда вызывается gc.Collect() ему приоритет приподымается и он все послушно подчищает.
Кроме того, его приоритет подымается самим .NET когда начинает нехватать памяти.

Qraizer
Боюсь что нет. Они не совсем для того, чтобы программировать компиляторы. Они скорее для возможности обобщенного программирования.
Кроме того, дженерики компилируются ДО инстанциирования, а во время инстанциирования просто прилинковываются.
Кстати, вот не знаю как там с выведением типов. По-моему не поддерживается. В третьей версии шарпа про это что-то написано, но ее еще нет, по-моему даже в драфте.
Автор: Qraizer
Дата сообщения: 23.08.2006 19:06
"Программировать компиляторы" - это конечно лихо Да я не об этом. Просто я сторонник того, что если что-то можно сделать при компиляции, то оно и должно делаться при компиляции. Нечего "константность" в run-time выносить. Если некий кусок алгоритма... как бы это сказать... "константен", то неплохо бы его и "исполнить" на этапе компиляции, а в run-time пользоваться уже готовыми результами.
В принципе, я убеждённый метапрограммер. Потому этот вопрос меня и заинтересовал.
Автор: Mickey_from_nsk
Дата сообщения: 24.08.2006 06:13
Qraizer
Ну так по твоему выходит и все либы надо на этап компиляции выносить.
Кроме того, Jit-компиляция и проводит всю окончательную компиляцию после запуска.
Воспринимай дженерики как либы шаблонов и будет тебе радость
Или я чего-то не понял? Что ты хочешь сделать при компиляции того что дженерики должны делать в runtime?
Автор: Qraizer
Дата сообщения: 24.08.2006 11:06
Mickey_from_nsk

Цитата:
Ну так по твоему выходит и все либы надо на этап компиляции выносить.
Почему это все либы? Я ж говорил о константности. Например, нужно решить квадратное уравнение, и при этом его коэффициенты - константы, заданые в ТЗ. Почему б его корни не вычислить компилятором?
Цитата:
Кроме того, Jit-компиляция и проводит всю окончательную компиляцию после запуска.
Воспринимай дженерики как либы шаблонов и будет тебе радость
Или я чего-то не понял?
Скорее, это я не понял. Не знаю я C#, и нету ни времени, ни особого желания изучать. Не в последнюю очередь из-за отсутствия шаблонного метапрограммирования. Ну нравится оно мне. Если дженерики окажутся на это способны, то глядишь и заинтересуюсь. А пока на крайняк и managed C++ подойдёт.
Цитата:
Что ты хочешь сделать при компиляции того что дженерики должны делать в runtime?
Дело не джерениках, а в неизменяемости в run-time. Обидно на это процессорное время тратить. Я как-то делал тулзу по работе - что-то типа трассировщика цифровых логических схем. В лаборатории верификации программного обеспечения у нас тестеры пишут тесты по требованиям, представленным зачастую как раз в виде таких логических псевдо блоксхем. Так как схему всё равно надо как-то описывать, то ради прикола я решил её всю представить в виде шаблонных элементов, которые при создании связываются друг с другом отношениями вход/выход. Компилятор бедняжка всю схему у меня разруливает, проверяет на корректность, строит зависимости элементов друг от друга и ещё кое-чего по мелочи. В run-time выполняется только сама трассировка и журналирование, т.к. тестовые ситуации пользователь может менять неоднократно, в отличие от описания сцены. Вот где метапрограммирования выше крыши. Боюсь, джереники тут отдохнут по полной программе.
Это я не к тому, как всё круто в C++. Это пример потенциала шаблонов с C++. Когда я познакомился с трудами упоминавшегося здесь Александреску, тогда и заболел метапрограммингом. Сейчас я уже не удивляюсь тому, как много места эта концепция может отхватить в обычной вроде ежедневной текучке, потеснив традиционный стиль, если знать о ней и хотя бы более-менее владеть ею.
Автор: Mickey_from_nsk
Дата сообщения: 24.08.2006 11:34
Qraizer
Знаешь, я лично не проверял, когда именно компилятор проводит вычисление константных выражений. Майкрософт говорит, что у них все крутее чем можно представить. Я думаю, если их код (по свидетельству Рихтера) может подстроиться под количество и качество процессоров на твоей машине, с их стороны было бы глупостью оставить константные вычисления в коде после Jit-компиляции. Я думаю, они оптимизируют код достаточно хорошо. Благо, у них есть свой компилятор С++, который - один из немногих - может полностью откомпилировать буст. Экспириенс у них на счет предварительной компиляции, я думаю, тоже есть.

По поводу метапрограммирования - не знаю, еще раз говорю. Я дженериками еще не успел заняться. Приходится на 1.1 программировать, а там их нет. Вот появится виста - тогда точно на 2.0 пересяду и начну рулить.
В C# есть ряд ограничений по сравнению с С++. Первым я бы назвал отсутствие множественного наследования. Если не ошибаюсь, у Александреску эта штука была одним из краеугольных камней.
Кроме того, в дженериках от С# отсутствует возможность (я так думаю) частичной детализации шаблонов (я имею фенечку, когда один шаблон с разными входными параметрами ведет себя по разному), но это я не проверял, возможно - глючу.

Блин, было бы больше времени на освоение этого всего...
Автор: Qraizer
Дата сообщения: 24.08.2006 14:56

Цитата:
Знаешь, я лично не проверял, когда именно компилятор проводит вычисление константных выражений. Майкрософт говорит, что у них все крутее чем можно представить.
Понятно. Майкрософт может много говорить, но проверzть всё равно нужно самому. В том-то и прелесть стандартов, что если сказано - обязано вычисляться при компиляции - то оно и будет вычисляться при компиляции. Шаблонный метапрограммнг в плюсах как раз на таких гарантиях и построен.
Цитата:
Я думаю, если их код (по свидетельству Рихтера) может подстроиться под количество и качество процессоров на твоей машине, с их стороны было бы глупостью оставить константные вычисления в коде после Jit-компиляции...
Вот об этом я как раз спорить не буду. О преимуществах поздней оптимизации и тем более компиляции в курсе, и тут их Jit-компиляция даст немало очков вперёд "чистым" компиляторам. Об этом я речь и не заводил.
Цитата:
По поводу метапрограммирования - не знаю, еще раз говорю. Я дженериками еще не успел заняться. Приходится на 1.1 программировать, а там их нет. Вот появится виста - тогда точно на 2.0 пересяду и начну рулить.
Дык давно уж можно поставить отдельно. Я как-то с Микросайта скачивал инсталл - ~20Мб. Или проблема в SDK?
Цитата:
В C# есть ряд ограничений по сравнению с С++. Первым я бы назвал отсутствие множественного наследования. Если не ошибаюсь, у Александреску эта штука была одним из краеугольных камней.
Скорее, не ограничений, а качеств, которые Макрософт посчитала избыточными. Стандарт C++ - он же един для всех, а Макрософту этого не нужно, достаточно, чтобы Application Framework был един. А Александреску слегка перенапрягся. Во многих случаях без наследования от шаблонных параметров можно обойтись. Достаточно самого присутствия соответствующего аргумента в списке.
Цитата:
Кроме того, в дженериках от С# отсутствует возможность (я так думаю) частичной детализации шаблонов (я имею фенечку, когда один шаблон с разными входными параметрами ведет себя по разному), но это я не проверял, возможно - глючу.
А вот отсутствие частичной специализации - это плохо. Даже очень. И отнюдь не только для метапрограмминга...
Ладно, в принципе ситуация понятна. Можно считать, что ответ на свой вопрос я получил.
Автор: Mickey_from_nsk
Дата сообщения: 25.08.2006 08:40

Цитата:
Понятно. Майкрософт может много говорить, но проверzть всё равно нужно самому. В том-то и прелесть стандартов, что если сказано - обязано вычисляться при компиляции - то оно и будет вычисляться при компиляции. Шаблонный метапрограммнг в плюсах как раз на таких гарантиях и построен.

Ага, а потом смотрим на таблицы компиляторов, способных переварить буст.

Цитата:
Дык давно уж можно поставить отдельно. Я как-то с Микросайта скачивал инсталл - ~20Мб. Или проблема в SDK?

Проблема в том, что просто ради интереса ставить - времени сильно не хватает. Надо ставить под проект. А какой проект на этой платформе может быть если заказчик не хочет ставить ничего лишнего. Хорошо если у него XP стоит и для нее 1.1 установлен.


Цитата:
Скорее, не ограничений, а качеств, которые Макрософт посчитала избыточными.

Я бы не стал так высказываться. В Майкрософт тоже не самые дураки сидят. В Java, например, тоже нет такой фишки.
Вот, кстати, не знаю, как обстоит дело с этим в Дельфи. Ведь главный разработчик .NET пришел оттуда.
Ну и еще одно "кстати". Работая на С++ Builder был очень неприятно удивлен тем, что от классов VCL невозможно порождение. Тоже надо было сваять контрол на их базе, пришлось агрегировать со всеми вытекающими.


Цитата:
А вот отсутствие частичной специализации - это плохо. Даже очень. И отнюдь не только для метапрограмминга...
Ладно, в принципе ситуация понятна. Можно считать, что ответ на свой вопрос я получил.


Я этого не утверждал. Я только говорю, что явно я эту штуку там не увидел.
Когда читал Александреску, я тоже долго удивлялся, что явно это нигде никто не прописал, а оно вон как оказывается.
Автор: Qraizer
Дата сообщения: 25.08.2006 13:39

Цитата:
Ага, а потом смотрим на таблицы компиляторов, способных переварить буст.
Неужто так всё плохо? Из всех моих компиляторов - правда, их у меня всего пять - один его не переваривает в принципе (он 12-летней выдержки, ему простительно) и один с трудом (это VC6).
А вообще, если уж такая ситуация, то пинать надо таких авторов реализаций. ИМХО буст - это ещё и тест на совместимость. Их счастье ещё, что буст ещё не в стандарте пока (к моему сожалению).
Цитата:

Цитата: Дык давно уж можно поставить отдельно...
...А какой проект на этой платформе может быть если заказчик не хочет ставить ничего лишнего...
Автор: Mickey_from_nsk
Дата сообщения: 25.08.2006 14:05

Цитата:
Неужто так всё плохо? Из всех моих компиляторов - правда, их у меня всего пять - один его не переваривает в принципе (он 12-летней выдержки, ему простительно) и один с трудом (это VC6).

Хм... Давно не заглядывал туда. Пол года назад они говорили о том, что полностью библиотека компилируется только VC++2003 (не было тогда еще 2005), Comeau и еще кем-то типа интела. Остальные - с определенной долей вероятности.

Цитировать про С++ vs Микрософт не буду - много чего там...
Есть у меня пара мыслей по этому поводу...
Попытался написать, стер - получилось много и всякой фигни. Тяпница на дворе, пора отдыхать уже.

По поводу билдера. Я его переваривал только до появления .NET. Как хочешь, но не мог я писать на MFC - душа не лежала. Да и занимался я тогда системными вещами - там MS VC 6 был самое то. То есть интерфейсы - на билдере, остальное - на VC. После этого ушел и не горюю.
Сейчас работаю на шарпе и один из проектов (в подвешенном состоянии) на плюсах.

Про Александреску - ну когда начал его читать, вроде по отдельности и так знал (ну кроме некоторых тонких моментов), но как все в куче увидел - сильно удивился...
Автор: Qraizer
Дата сообщения: 25.08.2006 20:58
Ну, у меня как раз тот самый 2003-й и два интела
Цитата:
Про Александреску - ну когда начал его читать, вроде по отдельности и так знал (ну кроме некоторых тонких моментов), но как все в куче увидел - сильно удивился...
А, вон оно что... У меня хуже было - брюки в курлике прожёг, читал там в перерыве, отдыхал типа... Жжёт, однозначно. В принципе, идеи у него простые. До того простые, что удивляешься, как это сам не догадался. Гений он, наверное. Когда брюки потушил, понял, что шаблоны в C++ я не знаю вообще. Это счас я такой смелый, а тогда я зелёный пытался учить молодёжь, и тут на тебе - ведро воды на голову.
Автор: XDiaBLo
Дата сообщения: 29.08.2006 08:39
О, интересное тестирование, правда старовато, 2 года назад сделано
http://www.codenet.ru/webmast/java/javavscpp.php
Автор: Xarde
Дата сообщения: 29.08.2006 10:25
XDiaBLo, спасибо за ссылку, интересна не статейка, а сами комменты. По крайней мере для себя я там нашёл полезное.
Автор: XDiaBLo
Дата сообщения: 29.08.2006 13:12
Xarde
Да что само тестирование, что каменты, подтверждают, что насчёт скорости Джавы спорить можно долго, если спорить вне всякого контекста. А в конкретной ситуации уже можно вести речь о разнице скорости. В разных ситуациях Джава и С++ будут по разному и соотноситься, как по быстродействию, так и по многим другим параметрам. А уж на то пошло, то будем судить Джаву не по скорости, а по другим качествам, к чему в принципе обычно споры и приводят в конце концов, как я заметил. Сначала всё крики про интер(треп)ацию :) А потом как каждый выяснят для себя, что Джава таки не интер(треп)атор, так и начинаются уже выяснения плюсов и минусов разных платформ и языков. Понимаю конечно, что священные войны бесконечны, но вот я наблюдая такие споры решаю для себя, какой язык или платформа всё таки мне ближе. Не фанатею ни от чего, и сторонник разностороннего развития, выбрал для себя пока развитие в области C/C++, Java, C#. Осталось из трёх выбрать доминирующее направление. Что я тут плохого писал про C++ можно не обращать внимания, была интересна реакция :) Ничего против C++ не имею, и сам пишу в основном на нём. Кроме VB и Pascal/Delphi ещё не встречал неприятных мне языков, и не надо мне говорить что я их мало видел. На всех языках которые я тут упоминал, я сам писал программы, и видел что к чему. На VB я даже делал дипломный проект, чуть крыша не уехала. Может с непривычки, до этого писал в основном на С++ и Assembler'е, а может от того, что вместе с VB мне пришлось изучать ещё жуткую библиотеку классов ArcObject...
Автор: Mickey_from_nsk
Дата сообщения: 29.08.2006 13:47
XDiaBLo
Мощно задвинул. Хорошую черту подвел под обсуждением. Респект, так сказать.
Рискуя вызвать очередную порцию флейма, все таки поинтересуюсь, а в какой области работаешь? Почему вдруг такой ограниченный выбор языков?
Я понимаю, что они - наиболее распространенные универсальные языки. Однако... Вернее даже не языки - платформы. Однако... Держусь мнения, что перл тож не плох, SmallTalk - супер язык, хотя совершенно не распространен (очень заковыристый у него синтаксис споначалу). В своих областях хороши Erlang и SML, видел неплохую работу на Haskel.

Все таки надо, наверно, исходить из проблемы, а не из инструментария. Небольшое отступление, но в тему.

Как грится, Far far away в далекой галактике ... Решили мы с приятелем наваять собсный язык. Молодые были, глупые, только недавно институт закончили. Я по старой институтской привычке распустил пальцы веером и с воплями "С" рулезнее всех!!!" взялся было штудировать Ахов и Ульманов с целью написания собственного синтаксическо-лексического анализатора. Но мой друг - умнейшей души человек - сидючи в тот момент за нашим компом (работали вдвоем за одним) мне сказал идею, что, в общем, не совсем дураки были ранее люди, может надо еще инструмент поискать...
В результате нашли yacc+lex. Опять же, нет бы сразу взять их gnu аналоги - bison+flex, решили, что это не наш путь. Написали компилятор (вернее интерпретатор - песня еще та была как). Глюков было - мама не горюй. Не было тогда еще DevPartner Studio, книги Александреску и паттернов GoF. Но все равно, использование специального, заточенного в нужном направлении инструмента позволило сделать достаточно интересную весчь. Пользовались потом не много, но со вкусом. Потом, по мере изучения С++ пришло в голову переделать язычок немного - переделали, еще больше понравилось, фенечек прибавилось и т.д. Потом все заглохло, но иногда, длинными осенними ночами...
Мораль. Если бы не мой дружок, я бы делал свой yacc+lex, который получился бы суперглючным. Проект был бы завершен или нет - не знаю. А так, если есть и работает, зачем платить дважды?
Автор: Qraizer
Дата сообщения: 29.08.2006 20:13
А я в своё время споры про то, как кто кого и как делает по скорости-удобству-выразительности-простоте-мощности-... (нужное подчеркнуть, лишнее вычеркнуть, отсутствующее вставить и тоже подчеркнуть), которые то и дело вспыхивают, любил прекращать таким вопросом: как правильно сравнивать производительность процессоров (имелись в виду Intel и AMD) - исключительно на общих наборах инструкций или включая специфичные для каждого SIMDы? Народ так и не мог решить, чеснее ли первый, а если да, то для чего тогда эти расширения, как не для использования.
Автор: XDiaBLo
Дата сообщения: 30.08.2006 06:40
Mickey_from_nsk
Я работаю в области техподдержки, в финансовой организации :) Программы, в основном конвертеры разных форматов файлов пишу. Практически никакого разнообразия. Пишу только на C++. Остальные языки уже вне работы изучаю, хотя и на работе как есть время, пробую свои программы на Джаву переписывать, вот, заинтересовала технология Джава вебстарт, но пока ещё толком не разобрался. В принципе, хочу в течение пары лет найти место, где можно серьёзным программированием заняться, а не мелкими проектами внутри организации. Правда тут я сам по себе, разработчик-одиночка, с толпой юзеров (у нас ещё много филиалов), которые звонят постоянно невовремя, когда я по уши в отладке очередной программы :) А там придётся в группе привыкать работать, но я стажа наберусь в одиночку, на курсы съезжу за сертификатами, и думаю не дурак, справлюсь. Хотя кажется мне, что самое то, это работа через интернет, вот улучшу свой английский, чем я сейчас и занимаюсь в свободное от работы время, и поищу работу на забугорных сайтах, в рунете всё-таки пока трудно найти удалённую работу. Кстати может тему создать? Очень даже интересный вопрос, но тут оффтопичный :)
Автор: Xarde
Дата сообщения: 31.08.2006 10:43

Цитата:
Кстати может тему создать? Очень даже интересный вопрос, но тут оффтопичный

Тема уже есть - "Объявления о работе для программистов". Только вот кто, по-твоему, будет писать о найденной работе на буржуйских сайтах? Это я не к тому, что всем жалко - просто объявления о работе вообще мало кто тут пишет.

Насчёт же выбора языка могу сказать, что в наше время стоит изучать и С++ и другие языки. В первую очередь С++ - его синтаксис сохраняется во многих языках, правда есть и дополнения. Зная С++ будет проще разобраться во многих других языках. А какой язык выбирать для реализации конкретного проекта - это вообще отдельный разговор, т.к. учитывать приходится не только факт знания языков, но и их сильные и слабые стороны. Не зная языка, мы ничего не можем говорить о его недостатках, а значит не можем его учитывать при выборе языка реализации. В общем, изучать стоит всё, до чего дотянешься.
Автор: XDiaBLo
Дата сообщения: 31.08.2006 16:30
Xarde
Ты не совсем понял, то есть совсем не понял, тема не "Объявления о работе для программистов", а тема "перспективность удалённой работы в России" %)
Автор: agny123
Дата сообщения: 03.10.2006 15:19
Мож кто подскажет какой компилятор для С++ выбрать чтоб бесплатен был под win и простота разработки интерфейса... решил освоить С++, а до этого на Assembler'e и на Delphi писал.
Автор: TheChampion
Дата сообщения: 03.10.2006 17:55
agny123
Бери MinGW, не промахнешься. http://mingw.org

Если поклонник M$, то качай Visual Studio Express Edition (~400 мегов). Абсолютно бесплатно.
Автор: agny123
Дата сообщения: 04.10.2006 08:09
TheChampion
А для MinGW интерфейс в виде WinAPI будет?? и там вроде надо либу его постоянно тоскать? или я ошибаюсь?
Автор: TheChampion
Дата сообщения: 04.10.2006 09:42
agny123
Нет, ничего особенного не надо. Скомпонуй статически и таскать будет нечего. Разумеется, надо поставить пакет для разработки в win.
Автор: Ulysses4ever
Дата сообщения: 10.10.2006 16:26
agny123, GUI на С++ можно делать так:

1) с использованием библиотеки Qt от Trolltech- есть ветка форума http://forum.ru-board.com/topic.cgi?forum=33&topic=4451#1
Бесплатная, только нельзя продавать сделанное на ней - точнее идет по GPL лицензии (чтобы "продавать" нужно отдельно купить коммерческую лицензию).

2)MS Visual Studio Express Edition и пользуйтесь Managed C++, в котором можно использовать Windows.Forms.
Автор: carmagedon
Дата сообщения: 22.03.2007 17:01
как начинающий программист хотелось бы получить пару советов.
На данный момент знаю на начальном уровне паскаль,ассемблер,с++.Что стоит учить более глубже(не обязательно из этих 3-х)что бы пригодилось в написании полее серьезных и полезных программ?
Автор: OdesitVadim
Дата сообщения: 22.03.2007 17:13

Цитата:
Что стоит учить более глубже(не обязательно из этих 3-х)

Вопрос неправильно поставлен и попахивает холиваром.
В действительности нужно:
алгоритмы, это раз. Для этого есть Кнут, к примеру.
паттерны. есть книга от "банды четырёх" (Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. "Приемы ООП. Паттерны проектирования")
Рефракторинг. Фаулер.

Если под Windows собираешся глубоко копать, то Рихтера почитать нужно.

По языкам.
Если Делфи, то глубже VCL
Если С++, то STL, Boost

Когда это хоть как то поймёш, тогда можно браться за сложные вопросы.
Автор: carmagedon
Дата сообщения: 22.03.2007 21:12
неплохо было бы если не сложно скинуть ссылки на предложенную литературу
Автор: OdesitVadim
Дата сообщения: 23.03.2007 12:13
carmagedon
Здесь ссылки на буки не принято постить - есть отдельная ветка в этом форуме. Но скажу, что многое вы найдёте к примеру здесь рееп://proklondike.com/. Также рулят магазины и гугл.
Имхо, такие книги лучше читать в бумажном варианте.

Страницы: 1234

Предыдущая тема: Зацикливание функции в VBScript


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.