Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - valexey

Страницы: 1 ... 3 4 [5] 6 7 ... 133
61
Общий раздел / Re: прикладная монадология...
« : Сентябрь 06, 2012, 07:16:05 am »
Да, на счет эффективности подхода Go. Вот результаты теста того самого Web-сервера

Как видим, Java с её не эффективной работой с памятью этот самый эффективный Go как Тузик грелку.

Ах да, под большими нагрузками у Go-примерчика еще и самая большая латентность (по горизонтали число одновременных соединений: 30, 100, 1000, 5000 соответственно, латентность в миллисекундах):

3010010005000
Nginx html(1C)14423,079
Nginx module(1C)14323,047
Nginx module(Multi-core)162053,036
Erlang(1C)386296,337
Erlang(Multi-Core)272233,084
Java, Netty1333,084
Go2633479,005

Желающие могут перепроверить на современных версиях всего этого: http://timyang.net/programming/c-erlang-java-performance/

PS. Илья, помнится писал что его Веб-сервер, видимо тот самый о котором в данном треде идет речь, бегал почти или также шустро как Apache web server, так вот, апач тут был бы еще медленее чем Go.

62
Общий раздел / Re: прикладная монадология...
« : Сентябрь 06, 2012, 06:55:47 am »
Да, как пример где нет ручного управления памятью (для объектов) и сборщика мусора тоже нет: Objective-C 2.0

И все эффективно :-)

63
Общий раздел / Re: прикладная монадология...
« : Сентябрь 06, 2012, 06:54:14 am »
Я ответил - потому что имею возможности не заморачиваться, делать сам инструменты, не зависеть от кого-нибудь, кто вложил годы в свои инструменты и теперь всех на них подсаживает. Делаю свои и решая разные задачи, которые передо мной ставит жизнь. Особенно если учесть свои возможности подготовки кадров.
А какие ты инструменты делаешь? Насколько я вижу (то есть то что публично известно) компиляторы Оберона например ты не пишешь.

Период знакомства с самыми разными языками у меня прошёл очень давно. Все основные и неосновные книги по языкам, парадигмам (типа Пратта, Кауфмана, Бен-Ари и много других) были перечитаны. Уважаю компактные языки типа Форта, Смоллтока, Лиспа, Эрланга и проч., но вижу, что по универсальности и подходящести под любую задачу и "под любой свежий мозг свежего кадра" они уже Оберона.
Не скажу за  смоллтолк и лисп, я их не слишком знаю (да, чтобы знать lisp не достаточно знать s-expressions, нужно целиком осилить весь Common Lisp, и, да, я бы не назвал его компактным :-) ), но форт и ерланг применимы там и решают те задачи, где оберон будет смотреться ну очень не к месту. Я вообще слабо себе представляю как можно противопоставлять оберон и ерланг. Они просто для разного созданы. Совсем для разного. На уровне того что пишешь в момент изучения языка (пишешь сам с нуля) этого просто не видно.

Уважаю Аду за основательность и гарантии, но позволить себе зависимость от такого жирного инструментария не могу.

У Ады сейчас одна радость и одна печаль - AdaCore. Радость потому, что AdaCore Аду развивает, печаль потому, что AdaCore либо вытеснила либо поглотила всех конкурентов. Моновендор (которому к тому же не интересны все кто мельче Боинга).

Принимаю подход Страуструпа в плане свойств "универсального языка системного программирования", вообще библиотечно на КП воплощаю некоторые свойства, достижимые именно на С++ (на котором я тоже пописал 2 года).
К сожалению те свойства, которые мне нужны от С++, на КП не достижимы.


В общем, я сейчас однозначно за подход библиотечных экспеиментов, как самый экономичный, близкий к практике. На базе Оберона, потому что... сто раз говорено, почему. Язык выше уровнем, прячущий императивную машину, задаром не нужен, ибо я её и сам спрячу библиотечно. Языки того же уровня ничего принципиального содержать не могут, а цена зависимости от жирного инструмента высока.
С++ выше уровнем чем Оберон. Ada, С# и даже Java - тоже выше. Ниже уровнем, если не ошибаюсь, Паскаль (обычный, не Object). А вот Modula-3 уже выше. Куда поставить Си я затрудняюсь сказать (по некоторым признакам он ниже уровнем, по некоторым выше).

64
Общий раздел / Re: прикладная монадология...
« : Сентябрь 06, 2012, 06:37:28 am »
Я ими периодически делился. Например, про возможность сочетать герметичность и валидность ссылок с работой без GC. Это невозможно и в Java, ни в C#.
Зато это возможно как минимум в Аде (от 83 года) и в С++ (через свои типы). Как минимум. Также, если мне склероз не изменяет, в одном из фортранов. То есть ничего нового.
Вы так хорошо друг друга поняли, а я нет. Что такое "сочетать герметичность и валидность ссылок с работой без GC. Это невозможно и в Java, ни в C#" ? ? ?
Насколько я понял, речь идет о полиморфных объектах на стеке с невозможностью утекания ссылок на них куда-то во вне и без рукопашного управления памятью. Собственно ровно то, из за чего ты ковыряешь тему Оберона под .net.

Но я тут подумал, и пришел к выводу что в случае java у оптимизатора достаточно информации для того чтобы описанный Ильей сценарий реализовывался всегда когда это возможно. То есть, переходя к сишным терминам, new Foo будет всегда когда это возможно вызывать не malloc, а alloca. Причем у оптимизатор тут может работать более эффективно чем человек (потому что он не ленится заглянуть во все библиотеки и выявить все места где это возможно).

(про C# ничего не скажу, я его не знаю)

65
Общий раздел / Re: прикладная монадология...
« : Сентябрь 06, 2012, 06:30:54 am »
Go'шный примерчик с Веб-сервером тоже никакой новизны в себе не нес. Подобному подходу минимум 20 лет :-)

Примерчик не нёс. Я его даже и не смотрел.
Стоп. Если ты его даже не смотрел, то о чем вообще речь?

Идея безопасного программирования системных и сетевых приложений - нова.
Говоря оберонистым языком - запрограммировать реализацию любого сетевого протокола/сервиса быстро, с хорошей абстракцией/декомпозицией, с эффективным использованием памяти (без GC) - и в то же время без SYSTEM.
Во-первых, при чем тут системное программирование вообще (особенно если мы говорим в контексте Go)? (вообще системное программирование - ужасный термин. под ним подразумевает столько всего сразу.. и написание драйвера системное программирование (хотя это банальнейшая программа работающая с железякой напрямую) и написание компилятора/транслятора внезапно тоже системное (а там наоборот - не банальная задача в полном отрыве от железа) )

Во-вторых чем сетевое программирование так уж принципиально отличается от банальной работы с файлами? По сути реализация какого-либо (сетевого)протокола это банальный парсер + конечный автомат (возможно с памятью). И то и другое отлично формализуется и автоматизируется.

А работа с файлами сетью эффективно и безопасно есть в той же Аде (привет 1983 год!), а если не пытаться писать все руками, то это безопасно и эффективно будет в любом языке, даже в Си. Заодно получим некоторые дополнительные преимущества, которые при программировании ручками ну никак не достижимы (и это уберет еще один класс ошибок).

66
Общий раздел / Re: прикладная монадология...
« : Сентябрь 05, 2012, 08:39:36 pm »
Так ведь у стопки весьма ограниченный размер и её глубину сложно прогнозировать.
Зависит от реализации (и от железяки). Весьма часто стек и куча делят память между собой. То есть есть у тебя скажем 100 Мб ОЗУ, и если из них стек скушает 80 мегабайт (после глубокой рекурсии), то на кучу останется 20 мегабайт.

Стек аппаратным бывает не слишком часто. Железяка обычно ничего не знает ни про кучу ни про стек. Есть просто память и есть указатель на вершину стека в регистре каком-то там.

Скажем в линуксе на x86 есть возможность сделать стек безразмерным (ограничено будет лишь объемом ОЗУ). То же самое в msp430 в принципе (другие подходы не эффективны и сложны, кроме того, в МК куча обычно не используется вообще - все на стеке (автоматическая) и "глобальных" переменных (статическая память) - глобальные в кавычках, потому что область видимости у них не глобальная).

67
Общий раздел / Re: Юмор
« : Сентябрь 05, 2012, 06:10:12 pm »
"Решил почитать этот пресловутый закон "О защите детей..." Я в смятении. Оказывается, у меня было ужасное детство. Чудо, что я вообще выжил..."

68
А кроме лжи много просто мусора. Например вот это: http://www.inr.ac.ru/~info21/go.htm
Поясню - процитировано ровно одно высказывание не самого компетентного товарища к вполне вменяемой статье.

Товарищ просто банально не знает Go (краем глаза синтаксис видел судя по всему). И не знает других языков, откуда Go почерпнул очень много.

69
Общий раздел / Re: прикладная монадология...
« : Сентябрь 05, 2012, 05:34:06 pm »
Цитировать
с эффективным использованием памяти (без GC)
Если будет когда-нибудь время, напишите пожалуйста, какими принципами при этом пользуетесь. Особенно в плане безопасности (Оберон без GC - ручное удаление или резерв однажды выделенной памяти?).
Банальная автоматическая память. То есть все на стеке.

70
Кстати, обратил нимание, что на англоязычном BlackBox-форуме периодически удивляет детальным знанием внутреннего
функциониривания BlackBox-а некто luowy@sohu.com, по-видимому, китаец. Так что, не все еще потеряно:-)
Он у нас тоже зарегистрирован. Ник: maliya
Судя по тому, что он смог пройти капчу и периодически читает форум, русский он понимает.

И да, все так как ты описал. Увы.

71
Общий раздел / Re: прикладная монадология...
« : Сентябрь 04, 2012, 09:01:19 pm »
Я ими периодически делился.
Да, я потому и попросил дать примеры, потому что каждый раз когда ты чем-то делился, я видел что подобное давно в мейнстриме применяется.

72
Общий раздел / Re: прикладная монадология...
« : Сентябрь 04, 2012, 08:54:59 pm »
Я ими периодически делился. Например, про возможность сочетать герметичность и валидность ссылок с работой без GC. Это невозможно и в Java, ни в C#.
Зато это возможно как минимум в Аде (от 83 года) и в С++ (через свои типы). Как минимум. Также, если мне склероз не изменяет, в одном из фортранов. То есть ничего нового.

(кстати, а вы знаете, что в .net'e не гарантируется что value-тип будет на стеке? :-) также как в java никто не гарантирует что объект будет в куче. и, если на то пошло, то и в Обероне нет ни слова про стек и кучу )

Когда Google в 2009-м году публиковал свой Go и тестовый примерчик с Веб-сервером, у меня был только что написан свой HTTP-сервер, который месяц пахал "в боевом режиме". Дело не в том, что я мерялся чем-то там с Гуглом, но я чётко увидел, что они решают тот же спектр проблем и подобной "алгеброй типов и операций". Только новый язык - это позволительно гуглу и академикам, для всех остальных это слишком накладный и неэффективный способ пробовать новые идеи.
Go'шный примерчик с Веб-сервером тоже никакой новизны в себе не нес. Подобному подходу минимум 20 лет :-)

Нет, я отлично понимаю что ты для себя открываешь все новые и новые подходы и приемы. Это здорово, я тоже периодически открываю для себя нечто эдакое. Но это не значит что это прям таки новаторские приемы не известные широко. Они известны и применяются, просто чтобы их понять и увидеть нужно до них дорости. Как дорос - начинаешь их видеть много где.

Также не вижу смысла ограничивать себя пристальным разглядыванием одного ЯП, много лучше (как мо мне) смотреть сразу на несколько. Иметь одновременно несколько точек зрения. Когда поработал на хаскеле, пощупал ерланг, увидел smalltalk, то совершенно по новому, более ясно видишь суть разных подходов в разных языках, видишь их общность. Общая картина становится ясна. И новые для себя подходы на любом языке (даже на хорошо знакомом) открываются много проще.

73
Общий раздел / Re: Юмор
« : Сентябрь 04, 2012, 02:22:29 pm »
Цитировать
программисты - они тоже разные бывают. я как-то с четверть часа слушал как наш дир объяснял одному желтопрограммнику - почему нельзя сначала 0,45 округлить до 0,5, а уж потом и до 1!

74
Общий раздел / Re: прикладная монадология...
« : Сентябрь 04, 2012, 02:19:05 pm »
Евгений, Вы спрашивали, почему я лично так отношусь к Хаскеллу и ФП.
Я Вам ответил. Пока я, работая с Оберонами, раз за разом открываю какие-то новые свойства/архитектурные приёмы, ранее никому в массах неизвестные
А можно пример подобного?

75
Общий раздел / Re: прикладная монадология...
« : Сентябрь 04, 2012, 01:28:34 pm »
Монада - маловато будет. Нужна хотя бы диада:

Страницы: 1 ... 3 4 [5] 6 7 ... 133