![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Frog |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 11.3.2006 Где: The swamp Репутация: нет Всего: нет |
Доброго времени всем. Мне нужна рекомендация по книгам о сетевом программировании на С/С++ для Windows - желательно с полными листингами рабочих примерoв. Под VC 2005. Уровень - для начинающих и среднячков. На русском или английском языках. Спасибо
![]() |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
Рандомизироваными алгоритмами и вероятностным анализом.
Если ты кнопки на формах рисуешь, то да. Если ты пишешь программу, которая обрабатывает данные, то тебе как минимум нужно знать сложность выполнения того или иного алгоритма над контейнером того или иного типа. И в каком случае какой контейнер использовать. Например, тебе нужно проиндексировать кучу текстовых файлов, от того какой контейнер ты выберешь зависит, будет это работать в течении секунд, часов, или суток ![]() |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
самое смешное, что большинство таких умозаключений можно сделать исходя чисто из здравого смысла - и порой это бывает полезней тупого заучивания формулы для каждого вида контейнера. Понимание принципа работы - 90% успеха. Но безусловно сложные алгоритмы требуют знания математики, хотя-бы исключительно прикладной |
|||
|
||||
SABROG |
|
||||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Это тот стимул, который подталкивает изучать язык. Естественно сама программа тебе должна быть интересна, должно "загореться" ее сделать. По мере возникновения трудностей и препятствий начнешь понимать, что эту программу уже писать не хочется. Но хоть какие-то знания ты уже получишь к этому времени.
Я переходил на C++ с ассемблера, года 2-3 читал книжку по C++, но задач, которые я бы не мог решить с помощью асма не возникало. У меня выработалось стойкое чувство отвращения к языку, из-за того, что программы получались большими и тащили за собой то, что мне совсем было не нужно. А еще эта омерзительная надпись внутри exeшника "Borland compiler". Тему классов я вообще не понимал, да и сейчас полно пробелов. Более менее начал понимать, когда стал использовать готовые чужие классы, приходилось их наследовать и попутно изучать свойствах. Я не советую читать книжку от корки до корки как учебник в школе. Во-первых это скучно, во вторых не терпится уже начать писать что-то свое. А пробелы в знаниях можно восполнять открытием нужной главы. Как правило все тянется по цепочке и начав что-то изучать придется в любой случае возвращаться к истокам. Т.ч. только беглое ознакомление, а потом выборочно то, что интересно.
Я задавался этим вопросом раньше. При чтении книжки все было понятно, понимал исходники, где что делается. Но когда начинал сам писать исходник с нуля, то банально не помнил как прописывать заголовок #include в кавычках или угловых скобках, какие параметры у main и как писать: using namespace std; или просто namespace std;. Забывал ставить точку с запятой, какие параметры у цикла for и как писать switch(){case:}. Т.ч. лучше перепечатывать, чтобы пальцы запомнили расположение часто используемых клавиш.
Мне до сих пор страшно от такой фразы, но я понимаю что это всего-лишь какая-то операция с битами и я знаю где найти ответ. Нас в колледже по информатике учили как переводить цифры из одной системы счисления в другую. Но, т.к. я этим не занимался каждый день, то естественно забыл. А раз мне это не нужно было, значит эта информация бесполезна. Главное знать, что такие вещи существуют и ты сможешь их найти если возникнет желание стать гуру, который пишет программы на листке бумаги без книжек и интернета, а потом все написанное компилится с первого раза, т.к. ты учел даже такую мелочь как разную реализацию стандарта в компиляторах. Аналогично. В связи с этим у меня было 3 неловких момента, когда я почувствовал себя ущербным. Первый случай, когда я пытался заставить крутится вокруг своей оси карточку. Там надо было периодически уменьшать карточку по координате X до тех пор пока она не принимала отрицательной значение и не показывалась ее оборотная сторона. А потом также увеличивать. Человек из мирка мне тогда посоветовал использовать толи синус, толи косинус. До сих пор не помню что именно. Вроде синус... Все работало и до того, но теперь была одна единственная функция без своего цикла. Второй случай был с определением номера строки в массиве. В памяти даже текстовый файл это всего-лишь длинная линия байтов. Не помню точно как все было, все уже работало. Но в какой-то момент я понял, что единственное что делает мой код это берет остаток от деления и несколько строк кода заменилось на "%". Третий случай это работа с трехмерными объектами. Все что касается координат чего-либо. Я как-то писал бота для игры, у меня был массив координат с месторождением ископаемых. Я поставил себе задачу узнать количество шагов, которое необходимо мне сделать, чтобы достигнуть точки. По сути все сводилось к тому, чтобы найти длину гипотенузы прямоугольного треугольника. Честно, взял учебник по геометрии со шкафа, хотя школу закончил 10 лет назад, чтобы посмотреть формулу. Я ее забыл через месяц. Я математику начал понимать только в 9ом классе, когда начал программировать. Уж много параллелей проводилось. Я просто тупо начал понимать, что функции типа логарифмов, синусов, суммы, интегралы и т.п. просто краткая запись математической программы, которая сокрыта за значками, но на самом деле внутри находятся все те же простые математические операции, которые не нужно проводить человеку самостоятельно, потому что великие математики уже сами вычислили возможные результаты и запихнули в таблицу, чтобы ученику не пришлось каждый раз проводить вычисления вновь и вновь. А для тех цифр, которых нет в таблице придумали калькулятор. А алгоритмы в учебник не включили. Я например не помню, чтобы в учебнике была формула вычисления числа Пи с точностью до любого знака. Хотя она и существует. |
||||||||
|
|||||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
Ну вообще, для новичка, с++ не лучий выбор. Для обучения лучше использовать простой язык программирования, который позволяет сосредоточится на проблеме, а не на тонкостях и ньюансах самого языка программирования. Это как велосипед, никто ведь не учится кататься сразу на дорогом навороченом велосипеде, все в детстве начинают с 3-х колесного
![]() |
|||
|
||||
taiven |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 2 Всего: 9 |
||||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Лучше оставвить ассемблер, в инете полно инфы. Хотя бы в википедии. Здесь про 2-ичную систему и про битовых операции -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
taiven |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 2 Всего: 9 |
||||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: 2 Всего: 3 |
Изучи хотя бы булеву алгебру. А вообще лучше, в том числе и для мозга в общем, изучить также остальные начала дискретной математики, классический вещественный анализ (полезно для мозга + больше будешь знать про О-нотацию), линейную алгебру и аналитическую геометрию. А пока ты все это учишь, начни с более простых языков - Ruby, например. Это сообщение отредактировал(а) Kallikanzarid - 29.11.2008, 10:40 |
|||
|
||||
taiven |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 2 Всего: 9 |
ИМХО это для уже знающего какой-то язык программиста может показаться, что тот или иной язык проще для изучения, а для новичка всё одинаково сложно. |
||||
|
|||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
имхо, С++ для новичка в программировании будет очень сложен. как уже сказал Lazin, надо начинать с чего-то попроще(например, с того же паскаля), что позволит сосредоточится на основных структурах данных, и базовых алгоритмах, не забивая голову фичами самого языка. разве сможет новичек понять конструкцию вида while(*p++=*q++)?
![]() при должном рвении, можно попробовать начать с С. тогда дальнейший переход на С++ будет проще |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
![]()
![]() ты похоже понимаешь ![]() ![]() ![]() -------------------- |
|||
|
||||
taiven |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 2 Всего: 9 |
ты хочешь сказать, что после изучения паскаля конструкция вида while(*p++=*q++), станет более понятной..? Разве С++ обязывает использовать именно такие конструкции? Я кстати начинал именно с плюсов. Это сообщение отредактировал(а) taiven - 29.11.2008, 15:24 |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
Dmi3ev,
![]() не иронизируй ![]() ![]() Добавлено через 4 минуты и 30 секунд taiven, нет. не хочу я так сказать. но.... ммм... после "разворачивания" подобных конструкций, все будет более понятно ![]() |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 3 Всего: 40 |
Я конкретно начинал с C++, до этого в школе "проходили" Pascal, так и не выучил ![]() ![]() И вообще, так можно спорить вечность, каждый начал по-своему, у думает что так правильно. ![]() -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |