ну сделайте что-нибудь, полуполезное. Например возьмите штук 100 строк. Запихните в массив, потом прошвырнытесь по нему, поискав строку с вхождением какого-нибудь слова. Соберите из получившихся одну большую строку. И выплюньте.
а) С++. Всё зашвыриваем в String-и, и поиск и тп хрень - всё через них
б) на Си чуть проблематичнее =). Искать слова - перебором символов из памяти.
Я это делал стопроцентно. Не прямо такую задачку, но String и прочее из stdc++ с сишными алгоритмами сравнивал. Правда сто лет назад.
Если вам не по силам все енто самому написать - могу ближе к вечеру сдуть пыль с Си =). Даже самому интересно стало - хочу четкое количество тактов посмотреть, проводимое в методах String.
что ж вы тут заладили с проблемой формулировок (оба). Всем понятно что на чистом Си (тут даже не полиформизм лепту вносит, а stdlib) всё работает намного шустрее. И опять же всем понятно что с помощью компиллятора С++ можно скопмилировать чистый Си. Разница - только в способе написания.
Я даже и не знаю как правильнее это назвать - "программа быстрее", "язык быстрее" или "конструкции языка" быстрее - какая разница? Если вы пишете на плюсах, то, скорее всего, со строками работаете через String. Если на си - то через операции с памятью. Разница в скорости будет огромна.
Если уж сравнивать Си и C++, то нужно сравнить две гипотетические программы где Си использует всё что может, и С++ использует ВСЁ (т.е. со строками раобтать именно через String). Если так сравнивать - си конечно быстрее, до тех пор пока не начинаешь имитировать объекты в плюсах (ну, или когда в си нужно хранить строки с нулевыми байтами) =)
ну.. сорри но сейчас уже довольно непросто найти все что происходило =)
там когда запостили впервые о Wide Finder - куча блогов писали о нём, так вот через полчаса кто-то сразу на эрланге прислал решение. В упор не помню кто, а шарахаться по рсскам и анализировать кто же это был - мне тяжеловато. Хотите верьте, хотите - нет =).
да вы же уже результаты смотрите конечные. Эрланга вариантов там и то куча =). Вначале был эрланг который рвал всех (условием был минимум 8-ядерник SUN) и был достаточно прост.
Если бы вы почитали о вариантах на перле и питоне - там не в количествах строк дело, а в абстракции логики. mmap io, chunked reading... это всё весело, но использовать постоянно - нереально (не разумно сложно). Стоит ещё иметь ввиду что задача-то предельно простая =). При более сложной задаче это будет в разы сложнее.
Эрланг тоже не строками мерить надо, а сложностью. Для всех кто понимает эрланг и питон решение на эрланги выглядит проще, чем решение на питоне =).
сравнивать erlang с Си (как там люди вверху делали) - абсурд. На си для 128-ядерного сервера всегда будет можно написать монстроидальное приложение, загрузив сервер на максимум. Вот только времени это займёт - тонну.
Сравнивать ерланг по производительности с чем-то там ещё вообще нет смысла. Суть-то в том, что даже на питоне занять 128 ядер можно (пока) только форкая процессы. Тут 3 месяца назад была задачка - многопоточный парсинг лога, которая превратилась в конкурс (погуглите). Так вот там на ерланге за полчаса кто-то наваял малююююсенькую штучку которая просто разорвала питон и все остальное (даже си). Ребята всполошились и понеслась... в течении недели все улучшали код на разных языках. Питон потом обогнал ерланг (но ТАКОЙ ценой, стоило только посмотреть что было в исходниках чтобы понять сложность). Затем кто-то вывел в перёд перл, и так он там и остался. Вот только код на перле тоже был сумасшедшим. И всего на чуть-чуть процентов быстрее чем на ерланге =). Собственно - полчаса vs неделя? Ни один сервер не стоит столько денег, сколько составила бы разница в стоимости разработчиков для большого проекта.
соц. сеть не сможет объединить людей которые просто оказались где-то рядом. Люди строят связи не по принципу - кто рядом, а по принципу - кто интересен. Вы ведь не общаетесь с соседями в вашей парадной так же сильно как с друзьями? Или может общаетесь и хотите замутить проект "сосед.ру"? )))
Посмотрите на фейсбук внимательно. Они в одном проекте сделали возможность постороения любых соц. связей - будь то универ, или офис, или дружба, или война =)).
"Вам никогда не хотелось найти своего коллегу, с которым работали лет 5 назад, обсудить его успехи по карьере, узнать, где он теперь работает, какая у него должность и какая зарплата? Вам никогда не хотелось узнать, что стало с той «шарашкиной конторой», в которой Вы начинали карьеру? Вам никогда не хотелось посмотреть на новую секретаршу в компании, из который вы уволились 2 недели назад?"
Но div'ы не могут отобразить структуру документа, для этого семантически более подходят списки, потому как они, в отличие от div'ов передают иерархию и связи, которые присутствуют между элементами.
если бы этого не было - использовать такие фреймворки вообще было бы нереально. Но опкоды - не панацея, проверка времени изменения сотни файлов требует времени, и не мало.
осталось только ещё понять что вы в своих примерах вообще используете исключения как простой status return.
Мощь-то их вся проявляется совсем не в таком коде.. а когда у тебя в десятой по глубине функции экспшн кидается, а ловишь ты его соооооовсем в другом месте. Тем самым код обработки ошибок вообще никак может быть не связан с бизнес логикой. Но оттого код ловли ошибок может стать "нивидимым".
полностью ОО-язык это как раз тот и есть который не позволяет процедурного программирования. Хотя необходимость наличия классов опять же этого не показывает.
нет, никак не завязано. Исключения - это просто способ отматывать стеки обратно в поиске кода, который исключение поймает. В некоторых языках можно даже продолжить выполнение программы в том месте, где остановились, и это все при том что как правило исключения ловятся совсем в другом месте.
Вон, тот же питон позволяет выкидывать даже циферки и строки =).
1. исключение - это "some condition that changes the normal flow of execution.". Следовательно, любая ошибка в процессе реализации задачи (ну скажем хотели файлик прочитать с винта, а прав нет) является исключением.
2. workflow != flow.
3. "Status returns are inferior to exceptions. All modern programming systems provide tools for exception handling. Use them." В PHP везде уйма варнингов и нотисов лишь по той простой причине, что слишком дофига std библиотеке переписывать надо.
Я причем не говорю что вообще нотисов и варнингов не должно быть. Должны быть, но те такие которые хочется ловить. Т.е. deprecation warning конечно никто швырять не будет.
вы что не верите?
ну сделайте что-нибудь, полуполезное. Например возьмите штук 100 строк. Запихните в массив, потом прошвырнытесь по нему, поискав строку с вхождением какого-нибудь слова. Соберите из получившихся одну большую строку. И выплюньте.
а) С++. Всё зашвыриваем в String-и, и поиск и тп хрень - всё через них
б) на Си чуть проблематичнее =). Искать слова - перебором символов из памяти.
Я это делал стопроцентно. Не прямо такую задачку, но String и прочее из stdc++ с сишными алгоритмами сравнивал. Правда сто лет назад.
Если вам не по силам все енто самому написать - могу ближе к вечеру сдуть пыль с Си =). Даже самому интересно стало - хочу четкое количество тактов посмотреть, проводимое в методах String.
он ведь тоже не дурак, а слушать собеседников не хочет.
напишите программку А в которой используете класс String и libc++. И программку Б в которой сделаете то же самое через прямые операции с памятью.
Кол-во тактов процессора будет отличаться раз в 300. Не 1 или 2, а именно 300.
Я даже и не знаю как правильнее это назвать - "программа быстрее", "язык быстрее" или "конструкции языка" быстрее - какая разница? Если вы пишете на плюсах, то, скорее всего, со строками работаете через String. Если на си - то через операции с памятью. Разница в скорости будет огромна.
Если уж сравнивать Си и C++, то нужно сравнить две гипотетические программы где Си использует всё что может, и С++ использует ВСЁ (т.е. со строками раобтать именно через String). Если так сравнивать - си конечно быстрее, до тех пор пока не начинаешь имитировать объекты в плюсах (ну, или когда в си нужно хранить строки с нулевыми байтами) =)
там когда запостили впервые о Wide Finder - куча блогов писали о нём, так вот через полчаса кто-то сразу на эрланге прислал решение. В упор не помню кто, а шарахаться по рсскам и анализировать кто же это был - мне тяжеловато. Хотите верьте, хотите - нет =).
Если бы вы почитали о вариантах на перле и питоне - там не в количествах строк дело, а в абстракции логики. mmap io, chunked reading... это всё весело, но использовать постоянно - нереально (не разумно сложно). Стоит ещё иметь ввиду что задача-то предельно простая =). При более сложной задаче это будет в разы сложнее.
Эрланг тоже не строками мерить надо, а сложностью. Для всех кто понимает эрланг и питон решение на эрланги выглядит проще, чем решение на питоне =).
результаты первой половинки - http://www.tbray.org/ongoing/When/200x/2…
на ерланге пишут часто. CouchDB - последнее что мне попадалось.
Сравнивать ерланг по производительности с чем-то там ещё вообще нет смысла. Суть-то в том, что даже на питоне занять 128 ядер можно (пока) только форкая процессы. Тут 3 месяца назад была задачка - многопоточный парсинг лога, которая превратилась в конкурс (погуглите). Так вот там на ерланге за полчаса кто-то наваял малююююсенькую штучку которая просто разорвала питон и все остальное (даже си). Ребята всполошились и понеслась... в течении недели все улучшали код на разных языках. Питон потом обогнал ерланг (но ТАКОЙ ценой, стоило только посмотреть что было в исходниках чтобы понять сложность). Затем кто-то вывел в перёд перл, и так он там и остался. Вот только код на перле тоже был сумасшедшим. И всего на чуть-чуть процентов быстрее чем на ерланге =). Собственно - полчаса vs неделя? Ни один сервер не стоит столько денег, сколько составила бы разница в стоимости разработчиков для большого проекта.
Посмотрите на фейсбук внимательно. Они в одном проекте сделали возможность постороения любых соц. связей - будь то универ, или офис, или дружба, или война =)).
нет, нет и нет =).. Чем не аргумент? ))))))
работать вам над собой ещё работать и работать.
статья не представляет ровным счетом никакого интереса любому кто хоть немного думал о социальных сетях и собирал информацию.
это, господа, пипец полный.
Мощь-то их вся проявляется совсем не в таком коде.. а когда у тебя в десятой по глубине функции экспшн кидается, а ловишь ты его соооооовсем в другом месте. Тем самым код обработки ошибок вообще никак может быть не связан с бизнес логикой. Но оттого код ловли ошибок может стать "нивидимым".
Думать надо головой, в любой случае =).
полностью ОО-язык это как раз тот и есть который не позволяет процедурного программирования. Хотя необходимость наличия классов опять же этого не показывает.
Вон, тот же питон позволяет выкидывать даже циферки и строки =).
2. workflow != flow.
3. "Status returns are inferior to exceptions. All modern programming systems provide tools for exception handling. Use them." В PHP везде уйма варнингов и нотисов лишь по той простой причине, что слишком дофига std библиотеке переписывать надо.
Я причем не говорю что вообще нотисов и варнингов не должно быть. Должны быть, но те такие которые хочется ловить. Т.е. deprecation warning конечно никто швырять не будет.