Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Какой язык программирования круче ! КОНКУРС )


Автор: Remiznik 20.9.2009, 15:44
Счас в теме С++ для начинающих опять развернулась война кто круче ! Чеснов говоря мне стало просто интересно и вот какое у меня предложение !
   Давайте проведём КОНКУРС какой язык круче . 
  Например от каждого языка команда ну наприпмер по 3 человека. Устанавливаются условия например платформа на которой она должна работать . Потом организаторы ( самые уважаемые админы и модераторы форума ) дают задание . И каждая команда на своём языке решает её . И потом начинаем сравнивать программы по как-то параметрам. Например быстродействие, количество строк , и ешо каким-то !
    Так например люди которые решают на каком языке программирования им решить задачу сразу будут видеть на примерах реальных задач что им выбрать !  Ну а люди которые соревнуются получат возможность на реальных примерах доказать что выбранный ими язык программирования действительно крут )

Автор: log1c 20.9.2009, 15:59
тут все зависит от *крутизны*, т.е. от профессионализма программиста в первую очередь. То есть если допустим команда пишущая на языке *А* проигрывает команде пишущей на языке *Б*, то это не означает что язык *А* хуже *Б* , это скорее всего означает что уровень 1й команды ниже. Либо команды должны формироваться из профессионалов в своей области...

Автор: Remiznik 20.9.2009, 16:02
согласен ... но я думаю каждый Язык Программирования сможет найти самого достойного для зашиты чести языка ))) 

Автор: kemiisto 20.9.2009, 16:06
 smile 

Автор: Remiznik 20.9.2009, 16:09
log1c ну значит язык не так хорош как утверждают его поклоники если нет проффесианало способного доказать что он дествительно хорош )

Автор: LamerTM 20.9.2009, 16:22
Мне тема интересна. Сам сейчас сравниваю Delphi и C#. По моим тестам, C# по скорости превосходит Delphi. А вот C++ показал более высокую скорость чем C#, но на нем я подробно не останавливался.

Еще хочу добавить что скорость языка не зависит от кривизны рук программиста. Реализация алгоритма - зависит. А скорость его выполнения зависит только от языка.

Автор: Remiznik 20.9.2009, 16:40
я тут подумал ))
 можно даже чтоб не люди соревновались а форумы например ! каждый заявившийся язык предоставляет одного человека который будет главным . Потом организаторы выдают задание и время сдачи.  Потом на каждом форуме посвященному конкретному языку ведутся обсуждения по созданию наиболее оптимального кода . И потом человек выдвинутый от каждого языка выкладывает завершенный код и пусковой фаел. Таким образом могут поучаствовать все люди которые заинтересованы в победе своего языка программирования .

Автор: LamerTM 20.9.2009, 16:51
Цитата(Remiznik @ 20.9.2009,  16:40)
я тут подумал ))
 можно даже чтоб не люди соревновались а форумы например ! каждый заявившийся язык предоставляет одного человека который будет главным . Потом организаторы выдают задание и время сдачи.  Потом на каждом форуме посвященному конкретному языку ведутся обсуждения по созданию наиболее оптимального кода . И потом человек выдвинутый от каждого языка выкладывает завершенный код и пусковой фаел. Таким образом могут поучаствовать все люди которые заинтересованы в победе своего языка программирования .

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

Чтобы сравнить языки, надо брать какой-то код и тупо переводить его на разные языки. Тут особой квалификации не требуется. Просто все должны проследить что код переведен корректно, а не с ухищрениями.

Автор: Remiznik 20.9.2009, 16:54
как раз наоборот .... тот язык програмирования который позволяет проводить разные трюки для упрошения и улудшения кода и будет лудшим ... покрайне мере по функцианалу и возможностям ))

Автор: LamerTM 20.9.2009, 16:59
Цитата(Remiznik @  20.9.2009,  16:54 Найти цитируемый пост)
как раз наоборот .... тот язык програмирования который позволяет проводить разные трюки для упрошения и улудшения кода и будет лудшим ... покрайне мере по функцианалу и возможностям ))

Если код будет открытым, чтобы участники могли его друг у друга заимствовать (только переводя на свой язык), тогда да.

Автор: GoldFinch 20.9.2009, 17:23
fasm лучше всех.

Автор: fixxer 22.9.2009, 10:36
Давайте уже задачку, не тяните.

Автор: LSD 22.9.2009, 11:21
А кто даст бабло на призовой фонд? Может TS? smile 

Автор: Remiznik 22.9.2009, 16:36
да я смотрю народ крутой токо словами может кидаться что какойто язык програмирования круче ! А чтоб на реальных примерах доказать свою правоту желающих нет ))) 

Автор: wester 22.9.2009, 16:50
Remiznik, 
а) нету примера
б) сама тема глупая )) 

Автор: Rohoss 22.9.2009, 17:50
Классная идея! smile  Давайте каждая группа будет писать систему уровня предприятия (ну там, штук 5 больших приложений, 2 сайта внутренний и внешний, веб сервисы и тд...). В самом деле, ведь не на калькуляторе мощь языка смотреть. Но конечно, в группе должно быть человек по 20, ну это ничего, думаю на форуме найдутся желающие, которые с удовольствием поучаствуют. smile  За несколько месяцев ведь они не помрут с голоду. А то ведь только на словах умные.

Автор: Remiznik 22.9.2009, 23:41
я не предлагал писать большие программы, банальных школьных задач хватило бы ))) 
но раз желающих нет и тема глупая давайте продолжать водить вилами по воде .... и не обоснована доказывать что тот язык который каждый из нас выбрал самый крутой только потому что его выбрал именно я ... а я же не могу ошибаться ))) зачем сравнивать я и так всё знаю )))

Автор: Rohoss 22.9.2009, 23:45
Цитата(Remiznik @  22.9.2009,  23:41 Найти цитируемый пост)
я не предлагал писать большие программы, банальных школьных задач хватило бы ))) 

Для чего хватило бы? Ты считаешь, о крутости языка можно судить из "Hello world"?

Автор: Remiznik 23.9.2009, 00:10
ну думаю несложных алгоритмов например по сортировке хватило бы .... для начал ) потом несколько примеров по ООП не сложных просто чтоб сравнить читабельность, обьём кода, вес исходника ! 
Ведь большие программы состоят из маленьких модулей и если какой-то язык даёт преимущество в меленьком коде весьма вероятно что эти преимущества будут складываться !

Хотя признаюсь честно я точно незнаю. Просто как я уже писал в теме по С++  люди пользующимися Липсом утверждают что на Липсе можно сделать всё проше! Вот я и подумал может и правда какой-то язык более эффективнее С++. А так чтоб не читать море документации по каждому языку будет ряд примеров разработанный на каждом языке и каждый желающий сможет посмотреть и оценить что ему больше подходит и начать изучение того языка который ему действительно нравиться !я не предлагал писать большие программы, банальных школьных задач хватило бы ))) 
но раз желающих нет и тема глупая давайте продолжать водить вилами по воде .... и не обоснована доказывать что тот язык который каждый из нас выбрал самый крутой только потому что его выбрал именно я ... а я же не могу ошибаться ))) зачем сравнивать я и так всё знаю )))

П.С Если такие сравнения уже проводились то не могли бы вы поделиться ссылками ! Мне это действительно интересно.

Автор: Akella 23.9.2009, 09:04
Думаю, что проект растянется не на несколько месяцев, а дольше. Потом кто-то уйдёт и не один, потом времени не будет хватать. Так оно и забудется

Добавлено через 15 секунд
А тем более, что хотите сразу несколько проектов.

Добавлено через 1 минуту и 15 секунд
А если крупные проекты для предприятий, то это нужно соображать в делопроизводстве, планировании, бухгалтерии, экономике, финансах и т.д. А кто будет ТЗ писать?

Добавлено через 3 минуты и 3 секунды
Думаете, что тяп-ляп - пиписками померялись и всё? Ну-ну.

Автор: Zloxa 23.9.2009, 10:09
Remiznik, Вы не забываете что язык это всего лишь инстумент. И как любой инструмент имеет свою предпочтительную область применения.
По каким критериям оценить что "круче" - напильник, натфель или болгарка?
Как можно сравнить HTML и C++?

Автор: Rohoss 23.9.2009, 10:52
Цитата(Akella @  23.9.2009,  09:04 Найти цитируемый пост)
Думаете, что тяп-ляп - пиписками померялись и всё?

Akella, а ты не замечаешь в моём сообщении сарказма?  smile 

Remiznik, был бы идеальный язык, сидели бы все на нём. А так вы не определили даже параметров, по которым собрались мерятся. К примеру, какая писька круче, длинная или толстая? Я своим сообщением хотел намекнуть вам, что не вся крутость языка сводится к скорости сортировки динамического массива или прочих подобных задач. Сейчас, во многих случаях, важно такое понятие, как повторное использование кода. Например, в Делфи вы не сможете в своём приложении использовать классы, определенные в dll, так же легко и удобно как в .net. А тем более наследовать их.
В общем для сравнения нужен критерий  smile , и вы не найдёте языка, который лучше во всём 

Автор: LSD 23.9.2009, 11:31
Цитата(Zloxa @  23.9.2009,  10:09 Найти цитируемый пост)
По каким критериям оценить что "круче" - напильник, натфель или болгарка?

Болгарка круче, т.к. позволяет легко запилить умников с надфилем и напильником smile 

Автор: Zloxa 23.9.2009, 11:39
Цитата(LSD @  23.9.2009,  11:31 Найти цитируемый пост)
Болгарка круче

За то я и люблю SQL smile

Автор: Akella 23.9.2009, 11:39
Цитата(Rohoss @  23.9.2009,  10:52 Найти цитируемый пост)
Akella, а ты не замечаешь в моём сообщении сарказма?  smile 

smile

Автор: mekhanikus 23.9.2009, 15:08
Могу предложить задачу для конкурса.

Например, написать функцию сжатия-разжатия файла.
Выбрать какой-нибудь известный алгоритм и реализовать его на разных языках.
При этом должны использоваться только стандартные средства языка,
использование сторонних библиотек запрещено.
Критерии оценки будут следующие:
 - размер исходника;
 - размер исполняемого файла;
 - скорость работы программы;
 - ну, и другие обьективные параметры.

Автор: Zloxa 23.9.2009, 15:13
Цитата(mekhanikus @  23.9.2009,  15:08 Найти цитируемый пост)
Критерии оценки будут следующие:

Асемблер рулит.
тут и к бабке ходить не надо Ж)

Автор: fixxer 23.9.2009, 16:02
Цитата(Zloxa @ 23.9.2009,  15:13)
Цитата(mekhanikus @  23.9.2009,  15:08 Найти цитируемый пост)
Критерии оценки будут следующие:

Асемблер рулит.
тут и к бабке ходить не надо Ж)

Угу. Особенно по первому критерию smile

Добавлено через 53 секунды
Не, боюсь числодробилки не показательны будут.

Автор: W4FhLF 23.9.2009, 16:19
Давайте алгоритм Хаффмана? 

Автор: W4FhLF 23.9.2009, 17:02
Сразу просто говорю на F# реализация 50 строк smile 

Автор: fixxer 23.9.2009, 18:10
Цитата(W4FhLF @ 23.9.2009,  16:19)
Давайте алгоритм Хаффмана?

Кодирование или декодирование?

Автор: W4FhLF 23.9.2009, 18:17
И то, и другое.

Автор: Void 23.9.2009, 19:11
Хаффман в вакууме неинтересен, надо специфицировать формат ввода-вывода. И что может быть лучше, чем реальный формат со всеми его вывихами smile Формат gzip (RFC 1952), сжатие DEFLATE (RFC 1951). Сжатие можно реализовать по-разному, а вот алгоритм декомпрессора задан строго, его и взять. Нельзя использовать zlib и любые библиотеки, напрямую поддерживающие формат gzip и/или реализующие алгоритмы Хаффмана, LZ77, DEFLATE.
Экзамен простой: разархивировать данные, сжатые gzip, либо в виде файла, заданного в качестве первого аргумента командной строки, либо поступающие на stdin. Во всех случаях вывод на stdout, т.е. аналог zcat.

И, нет, я не обещаю это реализовать сам smile

Автор: nerezus 23.9.2009, 19:43
Цитата

ну думаю несложных алгоритмов например по сортировке хватило бы .... для начал )
 Язык А круч, т.к. у него втроенная функция сортировки лучше?) Ну не бред ли)

Думаю нет смысла писать систему менее ~50кб кода. Только на больших проектах можно понять удобство технологий.

Добавлено через 3 минуты и 31 секунду
2all: давайте РЕАЛЬНУЮ а не писькомерную задачу решим?)
Предлагаю написать IDE для ЯП X используя ЯП X.

Сразу заденем и проектирование, и ГУЙ, илекс/ синт/семант анализы, и работу с внешней средой.

Естественно надо найти лаве на призы, ибо никто просто так писать не будет такое, думаю.

Добавлено через 13 минут и 19 секунд
Цитата

Критерии оценки будут следующие:
 - размер исходника;
 - размер исполняемого файла;
 - скорость работы программы;
 - ну, и другие обьективные параметры.
 Другие объективные? Из вышеперечисленных нету ни одного параметра, который выжен для большинства задач и объективен. Скорость работы нужна лишь в редких случаях, размер бинарника бессмысленный(ибо ресурсов в десятки-сотни раз больше по весу), а размер исходника мало связан со скоростью его написания.

Предлагаю критерием сделать такие:
1) Отсутствие визуальных тормозов GUI.
2) Правильность работы редактора.
3) Полноценность основных узлов.
4) Количество кода для реализации однотипных узлов.
5) Время разработки(тут сложно будет объективно оценить). Наверное через svn смотреть ревизии.

Автор: wester 23.9.2009, 20:33
nerezus,
не очень понял пункт 2
что понимать под правильностью работы редактора ? 

Автор: Void 23.9.2009, 20:50
Цитата(nerezus @  23.9.2009,  21:43 Найти цитируемый пост)
Предлагаю написать IDE для ЯП X используя ЯП X.
Сразу заденем и проектирование, и ГУЙ, илекс/ синт/семант анализы, и работу с внешней средой.
Естественно надо найти лаве на призы, ибо никто просто так писать не будет такое, думаю.

Тебя зовут Сергей Брин и ты хочешь устроить ещё один Summer of Code? smile Порядок призового фонда из расчёта на участника примерно такой же должен быть.
Задачка эта:
1) Крайне расточительна в плане человеческих ресурсов. Для любого языка написана IDE, функционал которой придётся повторять месяцы, а для мейнстримных языков — годы. Т.е. проблема хоть и практическая, но в действительности огромное количество времени будет вбухано в никому не нужную пузомерку.
2) Вводит глубоко нелинейную связь между возможностями языка и сложностью реализации. Особенно тут C++ достаётся, просто удар ниже пояса. (Не то чтобы я против, но это надо отметить).

Затея в целом — бесполезная трата времени, но если уж задаваться правилами, то мне оптимальным кажется такой вариант:
1) Условия задаются существующим стандартом, спецификацией и т.д. С одной стороны, это обеспечивает минимум разночтений, с другой придаёт задаче практический характер.
2) По любому почти стандарту существует реализация, которая упрощает тестирование, выступает в некотором роде референсной. Если она написана на Си, то одновременно задаёт верхний порог объёма исходников и планку эффективности.

Автор: nerezus 23.9.2009, 21:28
Void, Задача на неделю времени 1 человеку, имхо.

Цитата

Вводит глубоко нелинейную связь между возможностями языка и сложностью реализации. Особенно тут C++ достаётся, просто удар ниже пояса.
 Можно для отвлеченного языка впринципе. К примеру lua.

Автор: Void 23.9.2009, 21:46
nerezus, либо ты шутишь, либо у нас разные представления о том, что должно получиться. Дай список функциональности или, ещё лучше, ссылку на проект, её реализующий (для любого динамического языка, если уж мы про Lua заговорили) опять же с перечислением, что надо, а что нет.

Автор: LamerTM 23.9.2009, 22:21
Можно поступить гораздо проще и прикольнее: посмотреть какой язык более востребован на рынке. smile


В остальном же верно пишут. Критериев много. Кому нужна скорость, будут говорить что асм рулит. Кому удобство и скорость написания программы, те асм назовут отстоем. ТАк что приходится согласиться с тем, что всё зависит от задачи. Особенно учитывая что некоторые критерии взаимоисключающие.

Автор: GoldFinch 23.9.2009, 22:31
напишите-ка мне хороший вебинтерфейс на С++
а то я смотрю один хрен вам тут делать нечего, ИДЕ писать собрались...

Автор: nerezus 23.9.2009, 22:37
GoldFinch, что ты понимаешь под "вебинтерфейс"?

Автор: GoldFinch 23.9.2009, 23:01
это когда со стороны юзера - небольшой http сервер, 
а со стороны кода который этот вебинтерфейс его использует - это библиотека которой надо задать коллбеки на каждый URI, и тогда вебинтерфейс будет вызывать эти коллбеки когда ему будут приходить запросы от юзера, и передавать в эти каллбеки параметры запроса (GET,POST,etc)

например
Код


// класс пользователя, передается коллбеку
class User
{
public:
   ReplyHTML( string& html );
   ReplyXML( map<string, string>& xml );
};

// прототип коллбека
typedef function<
   void( 
     User& user,  // пользователь
     string& URI,  // запрошенный URI
     map<string, string>& GET // данные GET запроса
   )
   > callback;

// класс вебинтерфейса
class WebUI
{
public:
   void SetCallbacks( map<string, callback> );
   void Run();
};

Автор: fixxer 24.9.2009, 00:11
Предлагаю реализовать одну из задач http://www.boundvariable.org/task.shtml

Автор: nerezus 24.9.2009, 00:15
А какой смысл сравнивать ЯП/технологии на алгоритмических задачах?

Автор: W4FhLF 24.9.2009, 06:51
GoldFinch, в Qt для этого есть http://labs.trolltech.com/blogs/2009/09/18/qt-in-the-cloud-with-qwebclient/ или можешь посмотреть в сторону отдельной библиотеки http://www.webtoolkit.eu/wt (WebToolkit). 

Автор: nerezus 24.9.2009, 09:56
Цитата

это когда со стороны юзера - небольшой http сервер

Цитата

вызывать эти коллбеки когда ему будут приходить запросы от юзера
 Ты понял, что написал?

Автор: mekhanikus 24.9.2009, 11:39
Цитата(W4FhLF @  23.9.2009,  17:02 Найти цитируемый пост)
Сразу просто говорю на F# реализация 50 строк 

Пример в студию!

Добавлено через 4 минуты и 33 секунды
Цитата(nerezus @  23.9.2009,  19:43 Найти цитируемый пост)
1) Отсутствие визуальных тормозов GUI.

GUI разный бывает.
Можно на Direct'е забубенить и сравнивать с WinAPI.
Кто победит?

Автор: W4FhLF 24.9.2009, 11:46
http://blogs.msdn.com/lukeh/archive/2008/05/05/huffman-coding-with-f.aspx

Автор: nerezus 24.9.2009, 12:50
Цитата

Можно на Direct'е забубенить и сравнивать с WinAPI.
Кто победит?
 Всем по высшему балу ;) Но есть еще другой критерий по количеству кода ;) Если для DX придется писать кучу всего, то это его минус.

Автор: W4FhLF 24.9.2009, 13:12
Цитата(nerezus @  24.9.2009,  12:50 Найти цитируемый пост)
Если для DX придется писать кучу всего, то это его минус.


CEGUI

Автор: GoldFinch 24.9.2009, 17:54
Цитата(W4FhLF @  24.9.2009,  07:51 Найти цитируемый пост)
в Qt для этого есть QWebClient или можешь посмотреть в сторону отдельной библиотеки Wt (WebToolkit).  

посмотрел. 
не хотеть такую архитектуру %)
мне не нужно Application с вебинтерфейсом, мне нужна моя программа с вебинтерфейсом
слишком уж там все тяжело

Цитата(nerezus @  24.9.2009,  10:56 Найти цитируемый пост)
Ты понял, что написал? 

да понял. разве что написал видимо не очень понятно


-------------------------------------------------------------------------------

по теме:
задачу надо выбирать такую, чтобы она затронула много всяких направлений в программировании, но в то же время сравнительно небольшую, строк на тысячу.

Автор: Void 24.9.2009, 18:08
GoldFinch, http://www.pion.org/projects/pion-network-library посмотри. Boost, asio и прочий очень идиоматичный C++.

Цитата(GoldFinch @  24.9.2009,  19:54 Найти цитируемый пост)
задачу надо выбирать такую, чтобы она затронула много всяких направлений в программировании, но в то же время сравнительно небольшую, строк на тысячу. 

Перечисли что ли эти загадочные направления... штук пять хотя бы.

Автор: nerezus 24.9.2009, 18:10
Цитата

мне не нужно Application с вебинтерфейсом, мне нужна моя программа с вебинтерфейсом
 И как одно другому противоречит?


Цитата

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

Цитата

задачу надо выбирать такую, чтобы она затронула много всяких направлений в программировании, но в то же время сравнительно небольшую, строк на тысячу.
 Архиватор-стенограф с GUI. Строк на 500 будет, думаю.

Добавлено через 1 минуту и 32 секунды
Цитата

Перечисли что ли эти загадочные направления... штук пять хотя бы.
 ООП, GUI, сеть или веб, система.

Автор: GoldFinch 24.9.2009, 19:01
Цитата(Void @  24.9.2009,  19:08 Найти цитируемый пост)
очень идиоматичный C++.

Код

00023 void HelloService::operator()(HTTPRequestPtr& request, TCPConnectionPtr& tcp_conn)
00024 {
00025     static const std::string HELLO_HTML = "<html><body>Hello World!</body></html>";
00026     HTTPResponseWriterPtr writer(HTTPResponseWriter::create(tcp_conn, *request,
00027                                                             boost::bind(&TCPConnection::finish, tcp_conn)));
00028     writer->writeNoCopy(HELLO_HTML);
00029     writer->writeNoCopy(HTTPTypes::STRING_CRLF);
00030     writer->writeNoCopy(HTTPTypes::STRING_CRLF);
00031     writer->send();
00032 }

ну очень идеоматичный С++

но вообще да, уже полегче чем QT и т.п.

что-то мне подсказывает, что придется всетаки писать webUI самому...

Добавлено @ 19:16
Цитата(Void @  24.9.2009,  19:08 Найти цитируемый пост)
Перечисли что ли эти загадочные направления... штук пять хотя бы. 

gui, 
сеть, 
обработка данных (математика, алгоритмы), 
хранение и преобразование данных (ввод-вывод, сохранение в файлы, передача по сети),
взаимодействие с ОС

-------------------------

гуй должен быть в любой нормальной программе, он должен по крайней мере говорить юзеру чем программа сейчас занята, и иметь кнопку прерывающую это занятие

сеть может использоваться для вебинтерфейса, тоже ГУЙ, или для взаимодействия с какими-то существующими серверами, или для распределенных вычислений

взаимодействие с ОС может означать, что объем данных должен быть сопоставим с доступным объемом памяти. тогда хочешь-не хочешь, придется учитывать наличие ОС и особенности платформы

хранение данных означает, что данные должны как-то храниться между запусками программы, читаться из файла, писаться в файл, выводиться пользователю в понятном для него виде

обработка данных должна быть сложной, чтобы все эти объемы данных реально использовались, а не простое суммирование ряда, как например вычисление числа Пи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)