PDA

Просмотр полной версии : [Вопрос] Сетевое программирование


m0Hze
07.06.2009, 03:17
Собственно,начал потихоньку изучать C++, и задался вопросом: А то ли я изучаю оО
Собственно хотел узнать у гуру вот что.
Компилируемые языки, я начал изучать ради написания сетевых приложений.Различного рода,спамеры,и прочую лабуду.Прост она php не всегда есть место где развернуться можно.
И вот задался вопросом,а что лучше,именно для стевого программирования,с учетом знания php? Хочеться выучить язык, который больше всего подходил бы моим требованиям.Стоит ли дальше изучать C++, может оно того не стоит? Что сейчас "востребованней" и актуальнее,что больше подходит именнно для стевого программирования?
Знаю,возможно тема поднималась не раз,но я чтото не нашол, хотя ушел до 2006 года,но с моим вопросом не столкнулся.Мождераторов просьба не удалять,а посоветовать если есть возможность.
Ух как много букав получилось 8(

Ra$cal
07.06.2009, 03:46
учить с++ ради сетевых приблуд нерационально. проще для этого изучить дотнет. чтобы на с++ легко кодить сетевой софт нада изучить еще парочку либ, типа буста, qt(если qt выучить, то сетевой софт писать очень просто), плюс наверняка есть готовые либы для таких задач, но опять же, без вменяемого знания плюсов это будет блуждание(много подводных камней в области синхронизации, которые будут поправлены отчасти новым стандартом, но его еще нада ждать=\). поэтому советую смотреть в сторону дотнета, хоть я далеко не фанат сей технологии именно из-за попсовости и низкого уровня знаний нубко-кодеров на ней, которым не нужны серьезные знания, но которые быстро наращивают ЧСВ (к которым так же попадет и автор сего топика, тока без обид =)

m0Hze
07.06.2009, 03:54
учить с++ ради сетевых приблуд нерационально. проще для этого изучить дотнет. чтобы на с++ легко кодить сетевой софт нада изучить еще парочку либ, типа буста, qt(если qt выучить, то сетевой софт писать очень просто), плюс наверняка есть готовые либы для таких задач, но опять же, без вменяемого знания плюсов это будет блуждание(много подводных камней в области синхронизации, которые будут поправлены отчасти новым стандартом, но его еще нада ждать=\). поэтому советую смотреть в сторону дотнета, хоть я далеко не фанат сей технологии именно из-за попсовости и низкого уровня знаний нубко-кодеров на ней, которым не нужны серьезные знания, но которые быстро наращивают ЧСВ (к которым так же попадет и автор сего топика, тока без обид =)
Конечно без обид,просто как не посмотрю на какойнибудь софт,аля регер,спамер, авторы пишут,что написано на C#, и вот задался вопросом,стоит ли мне так напрягаться ради C++, может оно мне и не надо?
Я не учу язык чтобы быть программистом,и зарабатывать на этом деньги,так как ты сказал для мелки приблуд по необходимости.Для себя так сказать.

LEE_ROY
07.06.2009, 04:06
если не для работы а для "души", то имхо C# или Delphi, еще Python прикольно )

intNet
07.06.2009, 09:20
С# не советую. Мало литературы, да и возможностей не особо.
Если тебе нужно писать реггеры, спмеры, бруты, etc., то учи delphi или плюсы. К тому же, у плюсов, на сколько я знаю, есть сходства в синтаксисе c php.
P.S. Хотя сам бы посоветовал delphi, на нём сейчас в основном всё и пишется).

rushter
07.06.2009, 09:31
С# не советую. Мало литературы, да и возможностей не особо.
Если тебе нужно писать реггеры, спмеры, бруты, etc., то учи delphi или плюсы. К тому же, у плюсов, на сколько я знаю, есть сходства в синтаксисе.
P.S. Хотя сам бы посоветовал delphi, на нём сейчас в основном всё и пишется).
Литературы мало ?Её достаточно,по поводу возможностей ,откуда у тебя такие выводы ?

intNet
07.06.2009, 09:59
извини, если обидел, это просто моё мнение. А литературы(в сравнении с тем же delphi)
действительно очень мало.

Forcer
07.06.2009, 12:47
С# не советую. Мало литературы, да и возможностей не особо.
А литературы(в сравнении с тем же delphi)
действительно очень мало.

чушь. извини, если обидел.

по сабжу - python.

m0Hze
07.06.2009, 12:53
Питон не нравиться,не серьезный язык по моему.Это тоже php только с многопоточностью, почти перл,только новее.
У меня пока что выбор таков:
Delphi(когда то изучал,не понравилось,хочеться серьезный ЯП),C,C#C++.

intNet
07.06.2009, 13:01
Возможности delphi немногим меньше c++ имхо.
Тот же brutal на delphi написан.

Fata1ex
07.06.2009, 13:04
Опять понеслось. Глупо сравнивать delphi с с++. Глупо.
Насчет питона ты зря, очень перспективный и мощный язык.

m0Hze
07.06.2009, 13:33
Я их не сраниваю,но просто если посмотреть, что написано на дельфях,а что на С/++, то C\++ выигрывает в моих галаз со знаительны отрывом.
Собственно то что я хотел услышать,так и не прозвучало.Бдудать гуру тогда. =) Мне же интересно,что подходит для сети больше.

Fata1ex
07.06.2009, 13:37
если посмотреть, что написано на дельфях, а что на С++, то C++ выигрывает в моих глазах со значительным отрывом.

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

По теме - питон.

Ra$cal
07.06.2009, 13:57
сейчас учить делфи имхо вааще малоперспективно. до сих пор так и не родили 64х битного компилера. а это заставляет задуматься о перспективах языка. ну а насчет малого количества доков и слабости дотнет относительно делфи - это сильно...

razb
07.06.2009, 14:43
С++ нацелен на общий круг задач, а если ты хочешь кодить именно что то сетевое то тут уже надо смотреть в сторону сторонних библиотек(удобство, быстрота написания, функционал, etc). Как уже подметили коллеги хорошо будет изучить qt, boost(обе кроссплатформенные). С# актуален лишь в том случае если ты собираешься писать только под win-платформу.
Также поддерживаю предыдущие посты и хочу порекомендовать python, он довольно прост в освоении и имеет за плечами очень мощные средства, к тому же являясь интерпретируемым он в разы ускоряет разработку приложений.

nerezus
07.06.2009, 16:28
Прост она php не всегда есть место где развернуться можно. Скажу по секрету, что из интерпретируемых не олько PHP.
Посмотри в сторону Python.
Web-сервер с поддержкой CGI на нем пишется за 6 строк без сторонних модулей, к примеру.

если не для работы а для "души", то имхо C# или Delphi У делфи нет преимуществ по сравнению с C++ и он одного с ним уровня. Так что есть гибридный продукт C++ Builder: совмещает подход Делфи и плюсы C++.

Но писать сетевое на C++ - это как из пушки по воробьям...

razb
07.06.2009, 17:11
Но писать сетевое на C++ - это как из пушки по воробьям...
Категорически с вами не согласен, прошу обосновать это заявление)

intNet
07.06.2009, 18:47
Ну на самом деле он прав, если сравнивать с тем же пхп или питоном.
Просто чтобы отправить пост-запрос на сайт на c++ надо расписать строк 60 как минимум, а на php...
В общем автор, продолжай учить C++. Знание языка никогда не помешает.

login999
07.06.2009, 19:00
Люди, не учите питон, он вам не нужен, он мне нужен, а вы не учите, это быдлоговноязык, который глючит и падает, и вообще все что о нем написано хорошего-наглая ложь.
Идите в жопу, конкуренты мну не нужны...

nerezus
07.06.2009, 19:20
Категорически с вами не согласен, прошу обосновать это заявление) Кода будет больше.
Вероятность ошибиться больше.
Отладка сложнее.

Просто чтобы отправить пост-запрос на сайт на c++ надо расписать строк 60 как минимум, а на php... Ты не прав тут кстати. ~6 строк через CURL. Не стоит забывать и про Qt/etc.

c0n Difesa
07.06.2009, 19:22
Понятие «сетевое программирование» довольно широкое. Как всегда, для создания программы лучше всего использовать инструменты, которые помогут максимально сократить время на ее создание. Не стоит забывать и о возможности дальнейшей поддержки ПО (если таковая планируется), т.е. стоит задуматься о системе внесения изменений в программу, ведь на том же самом C# с библиотеками работать куда удобнее, чем в случае C++.

Придерживаясь «старой школы», сформулирую свое мнение: учить C++ нужно обязательно, даже если в дальнейшем на нем не планируется разработка приложений. Приплюснутый си – основа, которая иногда может напомнить о себе. К примеру, работа с железом на низком уровне в C# оставляет желать лучшего.

Если «в лоб» ответить на вопрос «что лучше для сетевого программирования?», то на своем опыте могу сказать: C#, ASP.NET полюс использование новых технологий от Miscrosoft (.NET Remoting, Web-Services и т.п.) зачастую позволяют добиться отличного результата без концентрации на коде. По поводу литературы: язык довольно высокоуровневый, поэтому разобраться в нем не составит труда по ходу дела (кстати, MSDN никто не отменял). Кстати, есть книга Джефа Просиза (один из ведущих разработчиков Мелкомягких), посвященная целиком и полностью .NET (C# в частности): «Программирование для .NET».

Forcer
07.06.2009, 19:45
К примеру, работа с железом на низком уровне в C# оставляет желать лучшего.
добивают такие фразы. какой смысл оценивать язык в той области, для которой он не был создан? а вот на с++ плохо верстать документы. и что?

Если «в лоб» ответить на вопрос «что лучше для сетевого программирования?», то на своем опыте могу сказать: C#, ASP.NET полюс использование новых технологий от Miscrosoft (.NET Remoting, Web-Services и т.п.)
это веб разработка - более высокий уровень, а не сетевое программирование - более низкий. к тому же веб-сервисы не технология ms

Fata1ex
07.06.2009, 19:49
The holy war has began!

Forcer
07.06.2009, 20:04
The holy war has began!
это уж точно ))

c0n Difesa
07.06.2009, 20:27
добивают такие фразы. какой смысл оценивать язык в той области, для которой он не был создан? а вот на с++ плохо верстать документы. и что?

"Счастье - это когда тебя понимают" (с). Не читайте обрывки моих фраз. Я не вел сравнение языков с точки зрения работы с железом, а привел пример области, где использование C++ предпочтительнее C# (для Вас он показался банальным).


это веб разработка - более высокий уровень, а не сетевое программирование - более низкий.

Смотря, что в Вашем понимании "веб-разработка"... Технология Remoting является отличной заменой "старым" способам создания клиент-серверных приложений. Альтернатива этой технологии в области веб: web-сервисы.

Forcer
07.06.2009, 21:18
Я не вел сравнение языков с точки зрения работы с железом, а привел пример области, где использование C++ предпочтительнее C# (для Вас он показался банальным).
именно об этом я и говорил. Если вы не поняли - то c# не создавался для той области, о которой в качестве примеры вы упомянули. Именно это я и хотел сказать. "Счастье это когда тебя понимают."



Технология Remoting является отличной заменой "старым" способам создания клиент-серверных приложений. Альтернатива этой технологии в области веб: web-сервисы.
я вроде не просил чтения лекций о технологиях. я сказал что webservice'ы не технология ms. технологии подобные remoting не они первые тоже придумали.

c0n Difesa
07.06.2009, 21:31
я вроде не просил чтения лекций о технологиях.

Я сказал это к тому, что "сетевое программирование" не настолько низкий уровень, каковым Вы его считаете: Ремоутинг смазывает грани сервисов и приложений типа "клиент-сервер".

технологии подобные remoting не они первые тоже придумали.

Я не просил читать лекции по истории, я лишь сказал, кому принадлежит технология .NET Remoting. Чтобы не быть голословным, можете дать ссылку на материал, который рассказывает о создателях ;).

Forcer
08.06.2009, 02:05
я лишь сказал, кому принадлежит технология .NET Remoting.
капитан очевидность? )))

насчет .net remoting... вы спрашиваете кто создал .net remoting? - microsoft. кто придумал rpc? в гугл. кто придумал контекст исполнения передавать? не знаю, но в ejb давно это используется.

Gar|k
08.06.2009, 18:50
Fata1ex жжет

Как по мне. Если ты хочешь делать парсеры сайтов, всякие сплоиты на php сайты, то тебе практически всегда придется работать с HTML и анализом кучи текста. Такс, а какой язык создавался для работы с текстами? ответ PERL (к сожелению я Python не знаю, может и там широкие возможности для работы с текстом)

Ну а если ты хочешь писать клиент серверы, всякие программы для работы с бинарными протоколами (ну там типа ICQ, MRA), снифаки... то тут другой выбор.

Приплюснутые Си, делфийский и Си шарп это языки обьектные (ООП) где программисту нужно больше не писать программы, а ПРОЕКТИРОВАТЬ их. Зато борландовские визуальные стредства разработки "дарят легкость" тыкнул сюда тыкнул туда прога готова, ура (рифма, ыыы). а как она работает это не надо замарачиватся. Так же не стоит обращать внимания, что твоя программа в 2,5 мегабайта у друга, который уммет кодить, весит 15 килобайт и его версия почемуто в разы быстрее работает...

Ну а если тебе захочится изучить протокол на более низком уровне описать его самостоялельно Си форева... очень гибкий язык который не абстрогируется от компьютера. Выделил память будь добр ее освобдить, написал что переменная 10 байт будь добр следи что там имено 10 байт. Так же если пишешь на чистом Си и блокируемых сокетах, то несколько изменений в программе и она уже кроссплатформена (без установки либ Qt и тд, а .NET ваще нет под unix)

Ra$cal
08.06.2009, 22:41
Ну а если тебе захочится изучить протокол на более низком уровне описать его самостоялельно Си форева... очень гибкий язык который не абстрогируется от компьютера. Выделил память будь добр ее освобдить, написал что переменная 10 байт будь добр следи что там имено 10 байт. Так же если пишешь на чистом Си и блокируемых сокетах, то несколько изменений в программе и она уже кроссплатформена (без установки либ Qt и тд, а .NET ваще нет под unix)
ну во первых в c++ нужно так же следить за памятью. разве что в помощь приходит boost. во вторых - с++ такой же кроссплатформенный по большей части. есть конечно у разных компилей тараканы, но обычно все норм. ну и в третьих - с++ немного модифицированный си + ооп, поэтому си как таковой учить необходимости нету. указатели есть. а больше из си ничего не надо.

по поводу проектирования - это актуально для больших систем. после проектирования все равно придется реализовывать логику системы, поэтому упоминать проектирование тут не очень к месту. про наличие компонентов - да, актуально. но для плюсов огромная база классов есть, на все случаи жизни и вкусы.
кароч с нуля учить с++ ради написания сниферов и прочего - смело. ибо не думаю что получится сделать что нить адекватное раньше чем через полгода. и это скорее будет модульная программа с признаками ооп, а то и ваще без оных. поэтому лучше все таки начать с дотнета, понять суть ооп, а потом вникать в узкие места с++, имея хороший запас знаний по ооп. благо c# имеет некоторое сходство с с++ в синтаксисе.

Gar|k
08.06.2009, 23:02
с++ немного модифицированный си + ооп
нифига подобного - это СОВЕРШЕННО разные языки.

Для большинства из нас основной язык разработки - это Си, в "конституции" которого задекларирована приближенность к аппаратуре (а значит - и высокая эффективность). Фактически это мега-ассемблер, предоставляющий программисту полную свободу и без предупреждения отстреливающий ногу вместе с детородным органом, даже если тот совсем не это имел в виду. ...

Писать сетевые приложения на Си категорически не рекомендуется. Но ведь пишут же. Отсюда берутся черви, атаки на удаленные системы и прочие коварства виртуального мира. ...

Теперь структурное программирование считается достоянием истории. В моду вошло ООП. С++ завладел умами программистов. Объектно-ориентированный подход пропагандируется единственно возможным способом программирования вообще и на приверженцев классического Си смотрят как на чудаков или недоучек. Прямо насилие какое-то получается! На самом деле преимущество ООП над процедурным программированием весьма спорно и возложенные на него ожидания так и не оправдались. Ошибок не стало меньше, сроки разработки только возросли, удачных примеров повторного использования кода что-то не наблюдается, а требования к квалификации разработчиков взлетели до не небес...

ТС почитай, статейку гуру - На чем писать, как писать, с кем писать (http://www.insidepro.com/kk/312/312r.shtml)

Ra$cal
08.06.2009, 23:06
нифига подобного - это СОВЕРШЕННО разные языки.
лол. да будет тебе известно, Си совместим с Си++. Настолько она разные языки =) Ибо страуструп понимал, что естьбольшая база кодов на си, которую нельзя в миг переделеать, да и ваще переделывать никто не будет, ибо слишком дорого.

Gar|k
08.06.2009, 23:12
2 Ra$cal чувак, что не осталось чистых компиляторов Си еще не значит что это одинаковые языки тока нарутили ООП... ты вообще ощущаешь разницу между процедурным и объектно ореентированым программированием?

Fata1ex
08.06.2009, 23:18
Не стоит путать парадигмы и синтаксис. Назвать плюсы и си разными языками можно, имею в виду их идеологию. Однако они все же очень близки как и говорит Rascal.

Gar|k
08.06.2009, 23:26
Fata1ex миротворец ))) а как же свещенная война? ))) давайте начнем новую
Паскаль против Си и еще оффтопа страниц на 20 растянем )