Здравствуйте, Vismut, Вы писали:
V>Нет.. я предпочитаю самообучение..
Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики.
А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Дискретная математика, и просто математика — нужна программистам однозначно!
0. Математическая логика.
1. Исчисление высказываний и предикатов (например, в искуственном интеллекте сильно пригождается)
2. Булева алгебра и булевы функции — ну, сам понимаешь, без этого — никуда.
3. Все, что найдешь по графам — без сомнения, должен прочитать и усвоить. Лучше — алгоритмический подход, чем теоретический (Кристофидеса книжка, например). Без них — вообще никуда. Многие программисты, бывает, изобретают алгоритмы там, где уже все давно написано — в теории графов.
4. Автоматы — сам назвал. "Автоматы всякие важны, автоматы всякие нужны"(с) Михалков, кажется. Там у него мамы. И это в компиляторах тоже много. И не в компиляторах тоже.
5. Формальные грамматики и языки — основа синтаксического анализа в компиляторах.
5. Комбинаторика.
6. Будешь смеяться, но и высшая алгебра — нужна обязательно. Кажется, каким боком? А вот нужна! Теория информации и кодирования — вся на алгебре основана. А кодирование, сам понимаешь — программистский хлеб. Например, zip-архиваторы используют адаптивное кодирование по Хаффмену. А блочный линейный код, знаешь, что такое? ASCII — это блочный линейный код. А с другой стороны есть определение: БЛК — это линейное векторное пространство над полем Галуа. И есть еще много других кодов, основанных, например, на многочленах. Короче, алгебра — обязательно!
7. Теория принятия решений — без нее никак. Многокритериальная оптимизация, например, по принципу Парето — вся принятие решений в экономике на этом стоит — еще с начала века.
8. Вероятность — а экспертные системы многие на этом стоят: шансы, коэффициенты уверенности и так далее. Тут же недалеко и нечеткие множества, логика, отношения, числа, графы.
В общем, математика нужна для понимания и реализации.
Больше никого не слушай, так как
а) я заведующий кафедрой
б) я старше всех на форуме
в) работал и программистом и преподавателем — знаю, что говорю
Это цитата из моего поста
Ты готов этим заниматься самостоятельно?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Прикладная математика и теория графов во многих задачах программирования так же бесполезны, как и физика или химия. Куда важнее знание структур данных, парадигм программирования (императивное, функциональное, логическое..), основных алгоритмических задач (методы поиска, сортировки), а в некоторых случаях и более специфичных понятий вроде НКА и ДКА, симплекс-метода и т.д. и т.п...
LVV>[q] LVV>Дискретная математика, и просто математика — нужна программистам однозначно!
Нужны. В общеобразовательном плане. LVV>0. Математическая логика.
Которая, кстати, весьма далека от логики среднестатистического программиста. LVV>1. Исчисление высказываний и предикатов (например, в искуственном интеллекте сильно пригождается)
Так уж часто Вам приходится заниматься задачами ИИ? LVV>2. Булева алгебра и булевы функции — ну, сам понимаешь, без этого — никуда.
Я бы не был так категоричен. LVV>3. Все, что найдешь по графам — без сомнения, должен прочитать и усвоить. Лучше — алгоритмический подход, чем теоретический (Кристофидеса книжка, например). Без них — вообще никуда. Многие программисты, бывает, изобретают алгоритмы там, где уже все давно написано — в теории графов.
А пример можно? Даже интересно стало... LVV>5. Комбинаторика.
В программировании? Пока ни разу не пригодилось знание комбинаторики. LVV>6. Будешь смеяться, но и высшая алгебра — нужна обязательно. Кажется, каким боком? А вот нужна! Теория информации и кодирования — вся на алгебре основана.
Из этого следует только то, что она нужна в теории информации и кодирования. Последние ведь далеко не всегда в работе над реальными проектами нужны. LVV>А кодирование, сам понимаешь — программистский хлеб.
Кодирование, как математическое преобразование информации? Тогда совсем не для каждого программиста важно. Все, опять же, зависит от области. LVV> Например, zip-архиваторы используют адаптивное кодирование по Хаффмену.
И часто Вам приходится изобретать ZIP-архиватор? LVV>А блочный линейный код, знаешь, что такое? ASCII — это блочный линейный код. А с другой стороны есть определение: БЛК — это линейное векторное пространство над полем Галуа. И есть еще много других кодов, основанных, например, на многочленах. Короче, алгебра — обязательно!
Обязательно, но только в случае, если программировать придется эти весьма специфичные задачи. LVV>7. Теория принятия решений — без нее никак. Многокритериальная оптимизация, например, по принципу Парето — вся принятие решений в экономике на этом стоит — еще с начала века.
А как это к программированию в целом относится? LVV>8. Вероятность — а экспертные системы многие на этом стоят: шансы, коэффициенты уверенности и так далее. Тут же недалеко и нечеткие множества, логика, отношения, числа, графы. LVV>В общем, математика нужна для понимания и реализации. LVV>Больше никого не слушай, так как LVV>а) я заведующий кафедрой LVV>б) я старше всех на форуме LVV>в) работал и программистом и преподавателем — знаю, что говорю
Хм, а категоричность юношеского типа...
Здравствуйте, DemAS, Вы писали: DAS> Вы в форум Работа заглядываете ? Что то я не вижу там ни требований знаний комбинаторики, не теории графов — почему то все требуют net, vc, базы данных.... DAS> С уважением к вашим знаниям.....
Угу. Вот только потом те, кто не знает комбинаторики и теории графов остаются кодерами в этих конторах. А народ посерьезнее становится архитекторами и сениор девелоперами.
Видишь ли, абсолютно все конторы руководствуются в рекрутинге ровно двумя требованиями: Smart & Get Things Done ((c) Spolsky). Просто не все об этом знают. Те, кто этого не понял, пишут в требованиях ".NET 1.1.1400 и 1.2.14224", и удивляются, почему у них текучесть 400% в год. На практике люди, не обладающие этими двумя навыками, не имеют шансов пробиться дальше места сразу у двери офиса. А упомянутые курсы развивают smartness именно в том направлении, которое полезно для карьеры в IT. Наличие курсовых и лабораторных практикумов, хоть и слабо, но тренирует скилл Get Things Done. В отличие от освоения синтаксиса С, С++ или С++++.
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Всем привет.. немного о себе.. с 18 лет (мне щас 21) большую часть времени провожу за компьютером.. похоже, что у меня паталогическая потребность взаимодействовать с ПК (сижу и под WindowsXP и под FreeBSD и Linux).. и я решил направить эту потребность в выгодное для моего кошелька русло.. а кроме того меня просто в этом мире мало что интересует, за исключением всего что связано с компьютерами, ОС-ми и программированием..
Прочитал полностью книги Б.Страуструпа и Р.Лафоре (по С++).. в ходе изучения научился писать консольные программы (и под Win32 и под Unix).. но это просто учебные программы, бесполезные для окружающих.. Я хочу посвятить свою жизнь программированию, постоянному совершенствованию в этом ремесле.. Есть большое желание писать полезные бесплатные программы.. в то же время нужно на что-то жить, то есть параллельно придется работать программистом где-нибудь.. очень интересует сетевое программирование (для TCP/IP) как под Windows, так и под Unix..
Я уверен, что на этом форуме общается много разных программистов.. и я очень прошу ответить на мои вопросы:
Принимая во внимание затянувшееся вступление, что вы можете мне посоветовать изучать дальше?
P.S. Очень жду ваших советов.. Спасибо за внимание..
08.04.04 12:46: Перенесено модератором из 'Прочее' — _MM_
По сути дела, программист решает инженерные задачи в какой либо конкретной предметной области. То есть, помимо собственно программирования, нужно знать и предметную область. А реальные (из жизни) инженерные задачи без высшей математики решить не удастся. Это только школьные задачи (типа, про бассейн в который через одну трубу втекает а через другую вытекает) можно решить просто. Если же подобная задача встретится на производстве, то окажется, что скорость вытекания зависит от уровня жидкости. Без матанализа ее уже не решить. А если еще емкость имеет, допустим, коническую форму (на химических производствах такое бывает) то задача еще усложняется: вытекание изменяет объем, а скорость вытекания зависит от уровня, который объему не пропорционален.
Не надейся, что тебе удастся избежать предметной области. Даже если надеешься заниматься только базами данных. Как здесь уже писали, неизвестно, как повернется жизнь и что понадобится завтра. Не слушай также тех, кто говорит, что изучал много всякой хрени, а она ему не пригодилась. Это ему только кажется. На самом деле благодаря этой хрени он даже мыслит по другому, но не осознает этого: ему кажется, что так было всегда.
Здравствуйте, nap2k, Вы писали:
N>Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще.
Это просто ты молодой еще.
Расскажу поучительную историю, которая произошла со мной.
Прямо библейская притча.
Будучи студентом математического факультета я изучал Численные методы. Так получилось, что по данному предмету у меня образовался хвост. Я все лето учил и в сентябре уго сдал. Препод был нормальный, не посмотрел. что сдаю хвост — поставил 5.
Через много лет приезжаю в Астрахань работать преподавателем. Угадайте с трех раз, какой предмет мне пришлость преподавать в первый же семестр?
Так что никогда не знаешь, что тебе в жизни пригодится, а что — нет. Я вот самосоятельно в свое врем БЭСМ-6 изучал — вроде бесполезние знания. А теперь я студеннтам рассказываю систему прерываний и привожу разные примеры реализаций. Естественно, биты рассказывать не требуется, а вот принцип — да, поскольку он совершенно другой, чем в интеле.
А диссер я защищал — чистая теория графов, хоть и приложенная к конкретной задаче. Не изучал бы в университете — фиг бы мне в голову пришло, что ее можно для решения диссеровской задачи применить.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Несколько мыслей по поводу (сугубо личное мнение).
В первую очередь изучать следует основы. Для программиста это математика
и архитектура вычислительных систем. Если есть возможность поучиться в
_хорошем_ учебном заведении — не стоит ей пренебрегать. В университете
не научат работать, но можно научиться мыслить и пообщаться с
интересными людьми.
Программирование, как и другие инженерные специальности, есть ремесло в
средневековом понимании этого слова. Многие аспекты проектирования
систем трудно формализовать, они лучше всего осваиваются в общении с
профессионалами при совместной работе над проектом.
Нравится нам это или нет, знание английского для профессионала необходимо.
LVV>Больше никого не слушай, так как LVV>а) я заведующий кафедрой LVV>б) я старше всех на форуме LVV>в) работал и программистом и преподавателем — знаю, что говорю
Здравствуйте, Vismut, Вы писали:
V>Это радует.. А вы бы могли посоветовать какую нибудь методику изучения технического английского? (может книги какие-нибудь есть хорошие для самообучения.. хотелось бы именно овладеть чтением английского текста, чтобы не ждать пока росийские издательства переведут нужные мне руководства)
Читай MSDN
Через пару месяцев будешь читать его бегло. А что еще для счастья надо?
Здравствуйте, Anatolix, Вы писали:
A>А можно несколько вопросов: A>1) когда вы были программистом что из этого вы использовали для коммерческого программирования?
Ну, я уже в другом посте ответил — смотря какие задачи решать. A>2) сколько вы знаете фирм которые это используют на практике(т.е. деньги на этом зарабатывают)?
Не знаю, так как последние 10 лет коммерческим программированием не занимаюсь. A>3) Вы точно уверены что эти вещи составлдяют больше 5% математики которую дают в техническом вузе(на мой взгляд все что вы перечислили можно изучить за семестр)
Возможно. Не пробовал. A>4) Почему в списке столько дисциплин которые почти никому из тех кого я знаю не нужны, и нету тех которые нужны всем с программистам(т.е. что за дисциплина обсуждает ООП дизайн и позволяет сказать почему полиморфизм предпочтительней if-else-if-else, что за дисциплина изучает как правильно нужно кидать и ловить exception-ы(примерно потовина "программистов" не умеет ими правильно пользоваться))
Так тут я вас "давить" стандартом буду. ВУЗ зависит от стандарта специальности. который разрабатывает не он. Я помимо заведования кафедрой, еще и член комиссии по специальности 220200. Неоднократно участвовал в заседаниях этой комиссии в разных городах России. А туда кто входит — заслуженные перезаслуженные люди из разных вузов всей России. В частности из ЛЭТИ, например. Которые много-много лет назад, еще в советские времена не только учились, но и учили и стали докторами и профессорами. Они просто не поспевают за реалиями времени. Но и они понимают, что нельзя сделать стандарт раз и навсегда. В частности, последний стандарт 2000 года по специальности 220200 АСОИУ уже очень приличный по составу дисциплин. В прежнем программисты вынуждены были химию изучать!
Теперь же разрешили следующее:
1. из гуманитарных обязательными являются иностранный язык и еще чего-то типа Отечественной истории — всего 2 или 3 дисциплины. Остальное можно не читать.
2. В состав общепрофессиональных дисциплин вошли:
Языки программирования, операционные системы, базы данных, системное ПО, технологии программирования, системы реального времени, сетевые технологии, системы искусственного интеллекта, защита информационных систем.
3. Разрешили вводить свои региональные компоненты и дисциплитны по выбору + дисциплины специализации. У нас это ООП, файл-серверные технологии, клиент-серверные технологии, интернет-приложения. язык Ява, экономика информационных технологий.
4. Кроме того, некоторые дисциплины стандарта мы просто осовремениваем. Например Проектирование АСОИУ — здесь изучают case-средства.
Другое дело, что нехватает квалифицированных кадров, поскольку программисты-практики преподавать не идут (денег мало платють). Да и мало просто рассказать — надо уметь ПРЕПОДАТЬ и научить! А это совсем другая работа, на которую квалифицированные практики — не идут. Но я тут уже приспособился — приглашаю своих бывших выпускников почитать каждому по одному курсу — кто в чем спецом стал. Пока не отказывают. Да и аспиранты в некоторых дисциплинах классно разбираются, и на современном уровне. Тоже помогают.
Вторая причина — нед УЧЕБНИКОВ. Я тут уже задавал вопрос: если вы все такие умные — что ж вы книжек не пишете? А?... Не слышу ответа!
Вот и приходится мне писать, который от реального программмирования уже минимум на 5 лет отстал. И я еще из лучших. Некоторые наши препы про паттерны и STL вообще не слыхали, не говоря уж о том, чтобы преподавать. А уволить нельзя — придется самому читать. А я еще хочу докторскую написать.
Третья причина — недостаток средств на технику и ПО. Но с этим все-таки полегче, чем с кадрами. Наш вуз в этом году закупил на 30000$ все что можно. В том числе Розу и дотнет 2003. И еще кучу микрософтовского ПО. И не дотнетовского тоже. Да и парк обновляем — по 2 класса ежегодно (это 30 машин). A>И вообще помоему это отмазки. Если посмотреть например MIT-овские курсы по CS то вы там увидите и ООП дизайн и все остальное. А то что вы перечислили находится в ВУЗ-овской программе уже лет 60, а вы пытаетесь это выдать за "edge of technology" и абсолютно необходимые любому программисту вещи, вместо того чтобы адаптировать ВУЗ-воскую программу которая устарела лет на 30.
По поводу адаптации я уже все выше ответил. Адаптируем, адаптируем, не беспокойся.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vismut, Вы писали:
V>Это радует.. А вы бы могли посоветовать какую нибудь методику изучения технического английского?
Для начала займись грамматикой.
Для нормального понимания технических текстов грамматика нужна.
Иначе не будешь понимать или будешь понимать не то, что написано.
Т.е. тебе нужно просто знать основные структуры английского языка
и как слова складываются в предложения.
Затем просто бери книги и читай.
Разговаривать и писать ты так не научишься, но бегло читать — это вполне реально.
При интенсивной работе чтение как-то само собой налаживается, а
разговорные навыки никогда лишними не будут.
> > Спасибо.. относительно важности английского языка я догадывался.. > поэтому уже где-то с месяц хожу на курсы, правда там в основном > разговорный английский (в смысле читать статьи по программированию на > английском будет очень сложно после этих курсов)
A>Я на вскидку могу сказать только в том что нельзя сравнивать с нулем вещественные числа в программировании
Как раз с нулем вещественные числа вполне можно сравнивать.
A>(что и без ЧМ понятно).
Обратите внимаение на эту фразу. Часто люди говорят, что учили много всякой хрени, но она им так и не пригодилась. На самом деле человеку свойственно забывать, откуда у него появились не или иные знания, ему кажется, что он это "и так" знал. Но так не бывает.
V>Спасибо.. относительно важности английского языка я догадывался.. поэтому уже где-то с месяц хожу на курсы, правда там в основном разговорный английский (в смысле читать статьи по программированию на английском будет очень сложно после этих курсов)
Разговорный — это хорошо. Я-то учил немецкий, поэтому английский пришлось учить по самоучиталю. Учил тщательно, заучивал все слова, потом стал читать статьи, выписывая оттуда незнакомые слова и заучивая их. И ждал, что скоро, когда словарный запас достигнет нужного уровня, я буду легко понимать английскую речь. Но через некоторое время меня стала одолевать смутная тревога. Я уже легко читал довольно сложные тексты, а речь не понимал вообще! Таконец до меня дошло, что разговорный и письменный язык — две большие разницы, и запомнив написание слова я совершенно не узнавал его в речи. Так что учи разговорный и не повторяй чужих ошибок. А технически — это элементарно. Почитаешь MSDN и через месяц будешь все понимать.
Здравствуйте, LaptevVV, Вы писали:
LVV>В общем, математика нужна для понимания и реализации. LVV>Больше никого не слушай, так как LVV>а) я заведующий кафедрой LVV>б) я старше всех на форуме LVV>в) работал и программистом и преподавателем — знаю, что говорю LVV>[/q]
LVV>Это цитата из моего поста LVV>Ты готов этим заниматься самостоятельно?
А можно несколько вопросов:
1) когда вы были программистом что из этого вы использовали для коммерческого программирования?
2) сколько вы знаете фирм которые это используют на практике(т.е. деньги на этом зарабатывают)?
3) Вы точно уверены что эти вещи составлдяют больше 5% математики которую дают в техническом вузе(на мой взгляд все что вы перечислили можно изучить за семестр)
4) Почему в списке столько дисциплин которые почти никому из тех кого я знаю не нужны, и нету тех которые нужны всем с программистам(т.е. что за дисциплина обсуждает ООП дизайн и позволяет сказать почему полиморфизм предпочтительней if-else-if-else, что за дисциплина изучает как правильно нужно кидать и ловить exception-ы(примерно потовина "программистов" не умеет ими правильно пользоваться))
И вообще помоему это отмазки. Если посмотреть например MIT-овские курсы по CS то вы там увидите и ООП дизайн и все остальное. А то что вы перечислили находится в ВУЗ-овской программе уже лет 60, а вы пытаетесь это выдать за "edge of technology" и абсолютно необходимые любому программисту вещи, вместо того чтобы адаптировать ВУЗ-воскую программу которая устарела лет на 30.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, LaptevVV, Вы писали:
N>>Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще. LVV>Это просто ты молодой еще. LVV>Расскажу поучительную историю, которая произошла со мной. LVV>Прямо библейская притча.
LVV>Будучи студентом математического факультета я изучал Численные методы. Так получилось, что по данному предмету у меня образовался хвост. Я все лето учил и в сентябре уго сдал. Препод был нормальный, не посмотрел. что сдаю хвост — поставил 5. LVV>Через много лет приезжаю в Астрахань работать преподавателем. Угадайте с трех раз, какой предмет мне пришлость преподавать в первый же семестр?
Ну скажем так, не все собираются быть преподавателями в Астрахани
Я вот чуствую, что мне несколько другие вещи пригодятся в будущем. Кстати обрати внимание для подтверждения тезиса ты даже выбрал академическую среду, вот так на вскидку можешь привести пример где тебе пригодились ЧМ вне академической среды.
Я на вскидку могу сказать только в том что нельзя сравнивать с нулем вещественные числа в программировании(что и без ЧМ понятно). И для людей которые численно решают диффуры при рассчете ядерных взрывов и рассчете обтекания корпуса мерседеса воздухом, таких людей относительно мало, если из-за их наличия делать вывод о абсолютной нужности ЧМ, то можно начать утверждать что основы бухгалтерии абсолютно необходимы всем программистам.
LVV>Так что никогда не знаешь, что тебе в жизни пригодится, а что — нет. Я вот самосоятельно в свое врем БЭСМ-6 изучал — вроде бесполезние знания. А теперь я студеннтам рассказываю систему прерываний и привожу разные примеры реализаций. Естественно, биты рассказывать не требуется, а вот принцип — да, поскольку он совершенно другой, чем в интеле. LVV>А диссер я защищал — чистая теория графов, хоть и приложенная к конкретной задаче. Не изучал бы в университете — фиг бы мне в голову пришло, что ее можно для решения диссеровской задачи применить.
А опять пример из неакадемической среды?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Vismut, Вы писали:
V>дело в том, что я из всего, что вы перечислили некоторые вещи прочитал.. и щас если что забуду я знаю в какую книгу заглянуть и где поискать.. в то же время, когда я изучал С++ и выполнения многочисленные задания.. неволно пришел к мысли, что практикующиму праграммисту (не теоретику) эффективнее потратить время не на изучение многочисленных теорий, а прежде всего на: V>- выбор областей в которых предполагается работа V>- выбор языка (языков) наиболее полно отвечающего (щих) специфики предполагаемой работы V>- выбор необходимых инструментальных средств (всевозможные библиотеки, среды разработки, API, UML (для ООП) и.т.д.) V>- практика, практика, практика.. — оттачивание мастерства в использовании избранных инструментов и языка (ов).. V>И с моей точки зрения, пониманию грошь цена по сравнению с мастерством (навыками).. в то же время незнание некоторых вещей, которые вы назвали действительно может привести к изобритению колеса и к не эффективному коду например.. V>Но мой вопрос касался прежде всего инструментальных средств, например для программирования под Win32: V>для создания GUI, сетевых программ, программ для манипуляций с файлами, драйверов и т.д.
V>Что вы можете посоветовать?
Ты уже практически ответил на свой вопрос
Смотри на список форумов РСДН.
В каждом задай 4 своих пункта в качестве вопросов. Из ответов будет ясно.
Если о С++ надо два направления: виндовское и никсовское. В одном работаешь, но про второе не забываешь и по крайней мере, материал просматриваешь. То есть в одном АПИ
работаешь, а в другом изучаешь аналоги по книжкам.
В Винде сейчас ИМХО лучше на дотнетовском С++ работать. В никсе — это тебе такм посоветуют.
На перспективу я ИМХО посоветовал бы С# и Яву — похожие языки.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vismut, Вы писали:
V>Прежде всего сетевое программирование, программы реализующие защиту от сетевых аттак, сканеры уязвимостей, сетевые анализаторы,
Теория множеств, теория графов, автоматы, комбинаторика Это так, сходу вспомнилось. А вообще, что касается сетей, конкретно TCP/IP и взаимодействия процессов — рекомендую поискать Уильяма Стивенса "UNIX : разработка сетевых приложений". Из всей литературы, что я встречал в этой категории — самая толковая книга как собственно по стеку протоколов, так и по программированию сокетов. На то, что в названии фигурирует UNIX — BSD sockets сейчас реализованы практически на всех платформах. В той же серии вышла его книга "UNIX : взаимодействие процессов" — тоже весьма-весьма, но это уже больше привязано именно к униху. V>удаленное администрирование, прокси-сервера с аутентификацией и шифрованием, возможно нестандартные решения распространенных сетевых приложений для фирм.. писать планирую преимущественно под Win32 — для денег... для души — Win32 и Unix..
Здравствуйте, Vismut, Вы писали:
V>>Начни, например, с изучения "Design Patterns" и "Refactoring" параллельно с тем, что тебе посоветуют другие.
V>Благодарю за совет.. Вы бы могли порекомендовать какие-нибудь хорошие книги на эту тему?
Здравствуйте, Vismut, Вы писали:
V>Всем привет.. немного о себе.. с 18 лет (мне щас 21) большую часть времени провожу за компьютером.. похоже, что у меня паталогическая потребность взаимодействовать с ПК (сижу и под WindowsXP и под FreeBSD и Linux).. и я решил направить эту потребность в выгодное для моего кошелька русло.. а кроме того меня просто в этом мире мало что интересует, за исключением всего что связано с компьютерами, ОС-ми и программированием..
V>Прочитал полностью книги Б.Страуструпа и Р.Лафоре (по С++).. в ходе изучения научился писать консольные программы (и под Win32 и под Unix).. но это просто учебные программы, бесполезные для окружающих.. Я хочу посвятить свою жизнь программированию, постоянному совершенствованию в этом ремесле.. Есть большое желание писать полезные бесплатные программы.. в то же время нужно на что-то жить, то есть параллельно придется работать программистом где-нибудь.. очень интересует сетевое программирование (для TCP/IP) как под Windows, так и под Unix.. V>Я уверен, что на этом форуме общается много разных программистов.. и я очень прошу ответить на мои вопросы:
V>Принимая во внимание затянувшееся вступление, что вы можете мне посоветовать изучать дальше?
V>P.S. Очень жду ваших советов.. Спасибо за внимание..
А учишься ли ты в вузе?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
V>Спасибо.. относительно важности английского языка я догадывался.. поэтому уже где-то с месяц хожу на курсы, правда там в основном разговорный английский (в смысле читать статьи по программированию на английском будет очень сложно после этих курсов)
Ты не поверишь, но технический английский очень прост! Намного сложнее читать художественную литературу чем техническую.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Ничего подобного. Чтобы быть хорошим программистом, нужно быть хорошим лингвистом. (с) Алан Голуб. Необходимо быть "обучабельным" и не более. Я закончил универ, но в программерской деятельности ничего из изложенных дисциплин мне не потребовалось. А потребовались, кстати, науки гуманитарного характера: логика (изучалась на фак-те философии, это на электроприводе-то!), семантика, и т.п. Не будем смешивать программирование и компьютерные науки. Сильно ему теория графов нужна будет при работе с БД...
Здравствуйте, kuj, Вы писали:
kuj>Здравствуйте, LaptevVV, Вы писали:
LVV>>Больше никого не слушай, так как LVV>>а) я заведующий кафедрой LVV>>б) я старше всех на форуме LVV>>в) работал и программистом и преподавателем — знаю, что говорю kuj>Хм, а категоричность юношеского типа...
Подробней ответить на все Ваши комментарии пока времени нет, но обязательно отвечу.
Но вас уже и так пометили минусом.
И жаль, что в профиле Вы никак не представились.
Наверное тоже молоды еще.
А за комплимент спасибо
Если меня еще за юношу принимают — это ИМХО неплозо!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще.
Здравствуйте, Vismut, Вы писали:
V>Здравствуйте, LaptevVV, Вы писали:
LVV>>А учишься ли ты в вузе?
V>Нет.. я предпочитаю самообучение..
А почему нельзя совмещать? Есть за такая замечательная вещь как экстернат.
Здравствуйте, nap2k, Вы писали:
N>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, Vismut, Вы писали:
V>>>Нет.. я предпочитаю самообучение.. LVV>>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
N>Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще.
Присоединяюсь к Лаптеву...
Никогда не знаешь, что может пригодится завтра.
А вообще, конечно зависит от задач, от роли на проекте и от твоих
устремлений и интересов.
Готов спорить, что основная масса рутины в IT в итоге уйдет
в Китай или Индию. Их много и они методом "copy paste" выдадут столько кода,
сколько надо. Тут с ним соревноваться нет смысла.
А задачи сложнее и интереснее потребуют немного уровня подготовки и знаний.
В общем это уже сто раз обсуждалось...
Знания не могут быть бесполезными. Они только дают тебе новые возможности.
Как ты ими воспользуешься и нужны ли они тебе — это зависит только от тебя.
Здравствуйте, Виталий, Вы писали:
В>Здравствуйте, Vismut, Вы писали:
V>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>А учишься ли ты в вузе?
V>>Нет.. я предпочитаю самообучение.. В>А почему нельзя совмещать? Есть за такая замечательная вещь как экстернат.
Угу...
И эта штука, как и заочное и вечернее образование не признается (или признается с большим скрипом)
ни в Европе, ни в Америке ни в Азии.
Буду категоричен, но первое образование должно быть очным.
Уже потом, если будет желание получить другое образование (скажем перейти в управленцы),
то можно (и даже лучше) совмещать с работой.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
LVV>
LVV>Дискретная математика, и просто математика — нужна программистам однозначно!
LVV>0. Математическая логика.
LVV>1. Исчисление высказываний и предикатов (например, в искуственном интеллекте сильно пригождается)
LVV>2. Булева алгебра и булевы функции — ну, сам понимаешь, без этого — никуда.
LVV>3. Все, что найдешь по графам — без сомнения, должен прочитать и усвоить. Лучше — алгоритмический подход, чем теоретический (Кристофидеса книжка, например). Без них — вообще никуда. Многие программисты, бывает, изобретают алгоритмы там, где уже все давно написано — в теории графов.
LVV>4. Автоматы — сам назвал. "Автоматы всякие важны, автоматы всякие нужны"(с) Михалков, кажется. Там у него мамы. И это в компиляторах тоже много. И не в компиляторах тоже.
LVV>5. Формальные грамматики и языки — основа синтаксического анализа в компиляторах.
LVV>5. Комбинаторика.
LVV>6. Будешь смеяться, но и высшая алгебра — нужна обязательно. Кажется, каким боком? А вот нужна! Теория информации и кодирования — вся на алгебре основана. А кодирование, сам понимаешь — программистский хлеб. Например, zip-архиваторы используют адаптивное кодирование по Хаффмену. А блочный линейный код, знаешь, что такое? ASCII — это блочный линейный код. А с другой стороны есть определение: БЛК — это линейное векторное пространство над полем Галуа. И есть еще много других кодов, основанных, например, на многочленах. Короче, алгебра — обязательно!
LVV>7. Теория принятия решений — без нее никак. Многокритериальная оптимизация, например, по принципу Парето — вся принятие решений в экономике на этом стоит — еще с начала века.
LVV>8. Вероятность — а экспертные системы многие на этом стоят: шансы, коэффициенты уверенности и так далее. Тут же недалеко и нечеткие множества, логика, отношения, числа, графы.
LVV>В общем, математика нужна для понимания и реализации.
LVV>Больше никого не слушай, так как
LVV>а) я заведующий кафедрой
LVV>б) я старше всех на форуме
LVV>в) работал и программистом и преподавателем — знаю, что говорю
LVV>Это цитата из моего поста LVV>Ты готов этим заниматься самостоятельно?
дело в том, что я из всего, что вы перечислили некоторые вещи прочитал.. и щас если что забуду я знаю в какую книгу заглянуть и где поискать.. в то же время, когда я изучал С++ и выполнения многочисленные задания.. неволно пришел к мысли, что практикующиму праграммисту (не теоретику) эффективнее потратить время не на изучение многочисленных теорий, а прежде всего на:
— выбор областей в которых предполагается работа
— выбор языка (языков) наиболее полно отвечающего (щих) специфики предполагаемой работы
— выбор необходимых инструментальных средств (всевозможные библиотеки, среды разработки, API, UML (для ООП) и.т.д.)
— практика, практика, практика.. — оттачивание мастерства в использовании избранных инструментов и языка (ов)..
И с моей точки зрения, пониманию грошь цена по сравнению с мастерством (навыками).. в то же время незнание некоторых вещей, которые вы назвали действительно может привести к изобритению колеса и к не эффективному коду например..
Но мой вопрос касался прежде всего инструментальных средств, например для программирования под Win32:
для создания GUI, сетевых программ, программ для манипуляций с файлами, драйверов и т.д.
Здравствуйте, Аноним, Вы писали:
А>Здесь много хороших книг по этим темам.
Да, спасибо — это библиотека научных книг.
Только вопрос, чем их просматривать?
Там формат мне какой-то неизвестный
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vismut, Вы писали:
V>практикующиму праграммисту (не теоретику) эффективнее потратить время не на изучение многочисленных теорий, а прежде всего на: V>- выбор областей в которых предполагается работа
Начнем с этого...
Чем ты хочешь заниматься? Какие задачи решать?
P.S. Я не теоретик, а очень даже практик, а с Лаптевым согласен
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>дело в том, что я из всего, что вы перечислили некоторые вещи прочитал.. и щас если что забуду я знаю в какую книгу заглянуть и где поискать.. в то же время, когда я изучал С++ и выполнения многочисленные задания.. неволно пришел к мысли, что практикующиму праграммисту (не теоретику) эффективнее потратить время не на изучение многочисленных теорий, а прежде всего на: V>>- выбор областей в которых предполагается работа LVV> V>>- выбор языка (языков) наиболее полно отвечающего (щих) специфики предполагаемой работы LVV> V>>- выбор необходимых инструментальных средств (всевозможные библиотеки, среды разработки, API, UML (для ООП) и.т.д.) LVV> V>>- практика, практика, практика.. — оттачивание мастерства в использовании избранных инструментов и языка (ов).. LVV> V>>И с моей точки зрения, пониманию грошь цена по сравнению с мастерством (навыками).. в то же время незнание некоторых вещей, которые вы назвали действительно может привести к изобритению колеса и к не эффективному коду например.. LVV> V>>Но мой вопрос касался прежде всего инструментальных средств, например для программирования под Win32: V>>для создания GUI, сетевых программ, программ для манипуляций с файлами, драйверов и т.д.
V>>Что вы можете посоветовать? LVV>Ты уже практически ответил на свой вопрос LVV>Смотри на список форумов РСДН. LVV>В каждом задай 4 своих пункта в качестве вопросов. Из ответов будет ясно. LVV>Если о С++ надо два направления: виндовское и никсовское. В одном работаешь, но про второе не забываешь и по крайней мере, материал просматриваешь. То есть в одном АПИ LVV> работаешь, а в другом изучаешь аналоги по книжкам. LVV>В Винде сейчас ИМХО лучше на дотнетовском С++ работать. В никсе — это тебе такм посоветуют. LVV>На перспективу я ИМХО посоветовал бы С# и Яву — похожие языки.
Здравствуйте, bkat, Вы писали:
B>Здравствуйте, Vismut, Вы писали:
V>>практикующиму праграммисту (не теоретику) эффективнее потратить время не на изучение многочисленных теорий, а прежде всего на: V>>- выбор областей в которых предполагается работа
B>Начнем с этого... B>Чем ты хочешь заниматься? Какие задачи решать?
B>P.S. Я не теоретик, а очень даже практик, а с Лаптевым согласен
Прежде всего сетевое программирование, программы реализующие защиту от сетевых аттак, сканеры уязвимостей, сетевые анализаторы, удаленное администрирование, прокси-сервера с аутентификацией и шифрованием, возможно нестандартные решения распространенных сетевых приложений для фирм.. писать планирую преимущественно под Win32 — для денег... для души — Win32 и Unix..
Здравствуйте, bkat, Вы писали:
V>>>Нет.. я предпочитаю самообучение.. В>>А почему нельзя совмещать? Есть за такая замечательная вещь как экстернат.
B>Угу... B>И эта штука, как и заочное и вечернее образование не признается (или признается с большим скрипом) B>ни в Европе, ни в Америке ни в Азии.
Та ну? Надо будет им об этом сказать, а то они и не знают
На самом деле у меня с этим никаких проблем не было, хотя не исключено, что мне повезло.
Плюс не могу сказать за всю Европу, но вот в Германии их университеты, с моей точки зрения, присто напросто активно поддерживают эту систему. То есть выбирается несколько курсов и по времени их прохождения тебя никто не ограничивает (ну, в разумных пределах, конечно). Можно сдать черех полгода (чаще всего курс расчитан именно на этот срок), можно через год, а можно и на следующий день
B>Буду категоричен, но первое образование должно быть очным. B>Уже потом, если будет желание получить другое образование (скажем перейти в управленцы), B>то можно (и даже лучше) совмещать с работой.
DjVu is a relatively new technology developed by AT&T research labs, and licensed to LizardTech for commercialization. It allows much greater file compression than other formats, and also allows searchable text and image files, similar to PDF. It is supported by browser plugins, available for most operating systems. In order for users to view DjVu information, they need to download and install the plugins. The document then appears in a browser window, similar to PDF files.
Advantages
Small file size — A typical PDF of 200K can be reduced to 50K, saving download time. A 3.75 MB TIF image that would be 160K as a JPG file can be reduced to 65K.
Searchable text & image files. Very similar to PDF documents.
Disadvantages
Needs a special plugin. This plugin is self-installing for Windows, however, so it isn't difficult to configure.
Proprietary format which doesn't have a large user base.
Searchable text is not correctable at this point, whatever the program recognizes as text is inserted into the document.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Вообще, ты правильно пишешь. Но, есть нюансы.
Скажем так, если взять программиста получившего высшее образование и программиста не получившего высшеего образования, то, наверно, абстрактно-более грамотным окажется первый. Равно как и в абстрактно-более лучших условиях при поисках работы. (Если исключить пункт об обязательном высшем образовании для претендента). (А этот пункт далеко не всегда проблема, т.к. часто альтернативе высшему образованию требуют сертификацию)
На практике, в более выигрышной ситуации оказывается тот у кого мозги лучше работают (вот, что самое главное для программиста), кто быстрее вникает в предметную область, грамотнее умеет проектировать программу, умеет полностью использовать потенциал языка и умеет решить поставленную задачу в срок.
Всё, что ты описал из математики с таким упоением, оно конечно интересно и хорошо, но, непосредственное применение данных знаний будет для 80% программистов крайне редко происходить в реальной жизни. И среди описанных тем, нет ни одной, для понимания которой требуется обязательно учёба в ВУЗе. Всё это можно самостоятельно изучить по книгам.
Примеры которые ты приводил из личной жизни, это, несмотря на то, что ты работал программистом, примеры из личной жизни преподавателя ВУЗа. Я думаю, они не очень удачны.
Я думаю, категоричное зачисление программистов в категорию однoзначно плохих, которые не имеют вышсего образования -- очень неправильно.
Здравствуйте, bkat, Вы писали:
B>Угу... B>И эта штука, как и заочное и вечернее образование не признается (или признается с большим скрипом) B>ни в Европе, ни в Америке ни в Азии.
"А мужики-то не знают"
По крайней мере, в Германии признаётся. То, попадёшь ли ты в фирму в которую резюме пишешь на работу зависит очень от многих факторов, где вид обучения является далеко не самым главным.
Здравствуйте, Vismut, Вы писали:
V>Принимая во внимание затянувшееся вступление, что вы можете мне посоветовать изучать дальше?
Я бы посоветовал озаботится получением знаний и опыта в области проектирования приложений. Знания в языках программирования ты и так приобретёшь, равно как и специфические в предметных областях со временем, а вот упустив важность осознания того, что надо уметь как можно раньше начать писать хороший код, попасть в число удачливых и грамотных программистов потом может оказаться сложновато.
Начни, например, с изучения "Design Patterns" и "Refactoring" параллельно с тем, что тебе посоветуют другие.
Здравствуйте, voxel3d, Вы писали:
V>Здравствуйте, Vismut, Вы писали:
V>>Принимая во внимание затянувшееся вступление, что вы можете мне посоветовать изучать дальше?
V>Я бы посоветовал озаботится получением знаний и опыта в области проектирования приложений. Знания в языках программирования ты и так приобретёшь, равно как и специфические в предметных областях со временем, а вот упустив важность осознания того, что надо уметь как можно раньше начать писать хороший код, попасть в число удачливых и грамотных программистов потом может оказаться сложновато.
V>Начни, например, с изучения "Design Patterns" и "Refactoring" параллельно с тем, что тебе посоветуют другие.
V>best regards..
Благодарю за совет.. Вы бы могли порекомендовать какие-нибудь хорошие книги на эту тему?
Здравствуйте, thebeard, Вы писали:
T>Несколько мыслей по поводу (сугубо личное мнение).
T>В первую очередь изучать следует основы. Для программиста это математика T>и архитектура вычислительных систем. Если есть возможность поучиться в T>_хорошем_ учебном заведении — не стоит ей пренебрегать. В университете T>не научат работать, но можно научиться мыслить и пообщаться с T>интересными людьми.
T>Программирование, как и другие инженерные специальности, есть ремесло в T>средневековом понимании этого слова. Многие аспекты проектирования T>систем трудно формализовать, они лучше всего осваиваются в общении с T>профессионалами при совместной работе над проектом.
T>Нравится нам это или нет, знание английского для профессионала необходимо.
T>Желаю успехов.
Спасибо.. относительно важности английского языка я догадывался.. поэтому уже где-то с месяц хожу на курсы, правда там в основном разговорный английский (в смысле читать статьи по программированию на английском будет очень сложно после этих курсов)
Здравствуйте, Аноним, Вы писали:
V>>Спасибо.. относительно важности английского языка я догадывался.. поэтому уже где-то с месяц хожу на курсы, правда там в основном разговорный английский (в смысле читать статьи по программированию на английском будет очень сложно после этих курсов) А>Ты не поверишь, но технический английский очень прост! Намного сложнее читать художественную литературу чем техническую.
Это радует.. А вы бы могли посоветовать какую нибудь методику изучения технического английского? (может книги какие-нибудь есть хорошие для самообучения.. хотелось бы именно овладеть чтением английского текста, чтобы не ждать пока росийские издательства переведут нужные мне руководства)
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Vismut, Вы писали:
V>>Нет.. я предпочитаю самообучение.. LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
LVV>
LVV>Дискретная математика, и просто математика — нужна программистам однозначно!
LVV>0. Математическая логика.
LVV>1. Исчисление высказываний и предикатов (например, в искуственном интеллекте сильно пригождается)
LVV>2. Булева алгебра и булевы функции — ну, сам понимаешь, без этого — никуда.
LVV>3. Все, что найдешь по графам — без сомнения, должен прочитать и усвоить. Лучше — алгоритмический подход, чем теоретический (Кристофидеса книжка, например). Без них — вообще никуда. Многие программисты, бывает, изобретают алгоритмы там, где уже все давно написано — в теории графов.
LVV>4. Автоматы — сам назвал. "Автоматы всякие важны, автоматы всякие нужны"(с) Михалков, кажется. Там у него мамы. И это в компиляторах тоже много. И не в компиляторах тоже.
LVV>5. Формальные грамматики и языки — основа синтаксического анализа в компиляторах.
LVV>5. Комбинаторика.
LVV>6. Будешь смеяться, но и высшая алгебра — нужна обязательно. Кажется, каким боком? А вот нужна! Теория информации и кодирования — вся на алгебре основана. А кодирование, сам понимаешь — программистский хлеб. Например, zip-архиваторы используют адаптивное кодирование по Хаффмену. А блочный линейный код, знаешь, что такое? ASCII — это блочный линейный код. А с другой стороны есть определение: БЛК — это линейное векторное пространство над полем Галуа. И есть еще много других кодов, основанных, например, на многочленах. Короче, алгебра — обязательно!
LVV>7. Теория принятия решений — без нее никак. Многокритериальная оптимизация, например, по принципу Парето — вся принятие решений в экономике на этом стоит — еще с начала века.
LVV>8. Вероятность — а экспертные системы многие на этом стоят: шансы, коэффициенты уверенности и так далее. Тут же недалеко и нечеткие множества, логика, отношения, числа, графы.
LVV>В общем, математика нужна для понимания и реализации.
LVV>Больше никого не слушай, так как
LVV>а) я заведующий кафедрой
LVV>б) я старше всех на форуме
LVV>в) работал и программистом и преподавателем — знаю, что говорю
LVV>Это цитата из моего поста LVV>Ты готов этим заниматься самостоятельно?
Читаю и сразу вспоминаю свое расписание и расписание старших курсов (я на Прикладной Математике и Информатике, 1й курс). Вопросы типа "нафиг мне это нужно" и "зачем я сюда поступил" уже начали отпадать Остались вопросы типа "И это только начало???". Действительно, не просто
Never argue with a woman who reads. It's likely she can also think. (c)
Здравствуйте, voxel3d, Вы писали:
LVV>>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
V>Вообще, ты правильно пишешь. Но, есть нюансы.
V>На практике, в более выигрышной ситуации оказывается тот у кого мозги лучше работают (вот, что самое главное для программиста), кто быстрее вникает в предметную область, грамотнее умеет проектировать программу, умеет полностью использовать потенциал языка и умеет решить поставленную задачу в срок.
V>Всё, что ты описал из математики с таким упоением, оно конечно интересно и хорошо, но, непосредственное применение данных знаний будет для 80% программистов крайне редко происходить в реальной жизни. И среди описанных тем, нет ни одной, для понимания которой требуется обязательно учёба в ВУЗе. Всё это можно самостоятельно изучить по книгам.
V>Примеры которые ты приводил из личной жизни, это, несмотря на то, что ты работал программистом,
(20 лет) V>примеры из личной жизни преподавателя ВУЗа. Я думаю, они не очень удачны.
На вкус и цвет... V>Я думаю, категоричное зачисление программистов в категорию однoзначно плохих, которые не имеют вышсего образования -- очень неправильно.
Ну, во-первых, никто не зачислял программистов без образования в "плохие" программисты. Чел спросил, куда бы двигаться, и что изучать.
А во-вторых, на самом деле вуз дает не только и не столько знания. Самое важное — структурирует мозги в нужном направлении и обучает умению учиться. Система-то жесткая: научился учиться — нормально закончишь. Не научился — вылетаешь. Это очень хорошо по студентам видно.
И мозги как правило, быстрее соображают, и лучше ориентируется тот, у кого вуз за плечами — пусть даже и не профильный. Нет, конечно можно много привести примеров и обратных. Но в моей практике — а я во многих конторах и командах работал — люди с вузом все-таки получше.
У меня под началом в свое время работал уникум — мужик СОВСЕМ без образования (8 классов) самостоятельно освоил программирование и успешно писал программы. Но... вы бы видели, что это за программы!!!!! Узбекский лагман и итальянское спагетти в 4932-й степени! Когда у него случался затык, и он не мог сам найти ошибку, он обычно обращался ко мне. Первое, что я делал — показывал, как надо правильно переписать программу, чтобы хоть как-то структурировать текст. После этого он обычно сам обнаруживал ошибку.
А так вообще мужик гениальный был — мог написать любую программу на любом языке — от PL/I до ассемблера pdp-11!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Суммарная оценка этой ветки за счет ответов магистров перевалила за сотню.
А я вот думаю, что и исходное сообщение надо оценить — несмотря на достаточно интенсивное пополнение рядов RSDN все-таки далеко не так часто встречается такое серьезное и разумное отношение к "саморазвитию".
Все, что здесь сказано, может и будет использоваться против меня...
Здравствуйте, LaptevVV, Вы писали:
V>>Примеры которые ты приводил из личной жизни, это, несмотря на то, что ты работал программистом, LVV>(20 лет) V>>примеры из личной жизни преподавателя ВУЗа. Я думаю, они не очень удачны. LVV>На вкус и цвет...
Да причём тут?.. Твои примеры связаны с дипломом/преподаванием в университете, поэтому я и сказал так. Ты лучше приведи пример -- "когда я писал программу оптимизирующую стоимость грузоперевозок, пришлось воспользоваться симплекс- методом который я изучил в институте..." -- вот это будет реальный пример в работе программиста.
А 20 лет -- я не хотел как-то принижать опыт/способности или что-то ещё.
LVV>У меня под началом в свое время работал уникум — мужик СОВСЕМ без образования (8 классов) самостоятельно освоил программирование и успешно писал программы. Но... вы бы видели, что это за программы!!!!! Узбекский лагман и итальянское спагетти в 4932-й степени! Когда у него случался затык, и он не мог сам найти ошибку, он обычно обращался ко мне. Первое, что я делал — показывал, как надо правильно переписать программу, чтобы хоть как-то структурировать текст. После этого он обычно сам обнаруживал ошибку. LVV>А так вообще мужик гениальный был — мог написать любую программу на любом языке — от PL/I до ассемблера pdp-11!
Ну не верю в то, что он хороший программист. Хороший программист пишет программы, которые помимо всего прочего можно сопровождать.
p.s. А почему если не секрет, ты в преподаватели пошёл?
best regards..
Re[5]: Хочу стать программистом..
От:
Аноним
Дата:
10.04.04 03:29
Оценка:
V>Это радует.. А вы бы могли посоветовать какую нибудь методику изучения технического английского? (может книги какие-нибудь есть хорошие для самообучения.. хотелось бы именно овладеть чтением английского текста, чтобы не ждать пока росийские издательства переведут нужные мне руководства)
Никакой методики как таковой нет. Нужно взять любую книгу и просто начать читать со словарем. Потом все намного легче будет. Что читать? Да что угодно. Хотя бы ту же MSDN Library. Еще тебе по теме посоветовали приобрести книги У. Ричарда Стивенса. Советую читать их в оригинале. Здесь есть список всех его книг. Советую приобрести вторую и шестую для начала. Я даже шестую в каком-то российском он-лайн магазине в оригинале видел (правда цена выше чем на амазоне). И по Юникси и по сокетам лучше его книг нет. Плюс английский подтянешь.
Да, эта ссылка на его страничку, хоть его и нет больше в живых.
Re[6]: Хочу стать программистом..
От:
Аноним
Дата:
10.04.04 03:37
Оценка:
Тут интервью с ним. Почитай. Если этот текст сможешь понять без проблем, то и книги точно сможешь!
LVV>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
Обеими руками за хорошую вузовскую подготовку как средство для структуризации мозгов, тем не менее категоричность ответа настораживает!
LVV>Больше никого не слушай, так как LVV>а) я заведующий кафедрой LVV>б) я старше всех на форуме LVV>в) работал и программистом и преподавателем — знаю, что говорю
Хочется спросить: все что вы перечислили, это _необходимо_ знать, чтобы быть программистом? А как же знание алгоритмов, например, человек, проштудировавший 3-томник Кнута, он может считаться программистом или как? С другой стороны, человек, знающий теорию графов, но не умеющий реализовать ее в виде кода, он может считаться программистом?
Что в вашем понимании входит в понятие программиста?
Должен заметить, что далеко не всякий человек с высшим нематематическим
образованием способен осилить Кнута. К счастью, в русском переводе вышла
"Конкретная математика" (ДЭК с соавторами), которую можно использовать
как введение к "Искусству..."
> Хочется спросить: все что вы перечислили, это _необходимо_ знать, > чтобы быть программистом? А как же знание алгоритмов, например, > человек, проштудировавший 3-томник Кнута, он может считаться > программистом или как?
Здравствуйте, Ranger_XL, Вы писали:
R_X>Обеими руками за хорошую вузовскую подготовку как средство для структуризации мозгов, тем не менее категоричность ответа настораживает!
Ну, в моей жизни встречались много программистов и с высшим образованием, и без высшего образования. Общая тенденция такова: с высшим образованием человек лучше адаптируется в мире вообще и в информационных технологиях в частности. С высшим образованием чаще и быстрее переходят на следующие ступеньки иерархии (честно, говоря, ни одного примера, когда человек стал неким руководителем-лидером в области информационных технологий, я не знаю )
Физическое наличие диплома, кстати, не обязательно (у меня есть студент, который прослушал весь курс, еще 4 года назад, сдал все экзамены, но диплома так и не получил пока — некогда физически написать и защитить. Хотя товарищ успешно работает в качестве директора собственной фирмы и на работу принимает только своих, то есть наших выпускников — знает, что и в каком объеме они могут знать и уметь). R_X>Хочется спросить: все что вы перечислили, это _необходимо_ знать, чтобы быть программистом? А как же знание алгоритмов, например, человек, проштудировавший 3-томник Кнута, он может считаться программистом или как? С другой стороны, человек, знающий теорию графов, но не умеющий реализовать ее в виде кода, он может считаться программистом?
Ну, знание алгоритмов — это вообще специальное программистское знание. Об этом даже тени сомнения быть не может — по умолчанию поджразумевается. что программист это должен знать — или знать источник, где это написано и зачем.
Знание Кнута — очень полезная, но необязательная составляющая. Да и не всякий программист полезет разбираться в нюансах MIX. Сейчас посчти все те же алгоритмы, и даже более новые и свежие, можно найти в других источниках. R_X>Что в вашем понимании входит в понятие программиста?
Трудно сказать. Невозможно дать точное определение. Я тут полагаюсь на интуицию, которая меня еще никогда не подводила — тутя "Энштейн"(с) из Штирлица. При общении со студентами быстро становится понятным, кто соображает, а кто зубрит, с кем можно будет работать, а кто халявщик, кто способен к коллективной работе, а кто сильно озабочен "авторским правом". Так что определить трудно — все решается на месте в каждом конкретном случае.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
V>Прежде всего сетевое программирование, программы реализующие защиту от сетевых аттак, сканеры уязвимостей, сетевые анализаторы, удаленное администрирование, прокси-сервера с аутентификацией и шифрованием, возможно нестандартные решения распространенных сетевых приложений для фирм.. писать планирую преимущественно под Win32 — для денег... для души — Win32 и Unix..
Тут с завкафом надо согласиться — в криптографии перечисленные дисциплины помогут. Но они явно не краеугольны...
Здравствуйте, nap2k, Вы писали:
LVV>>Дело в том, что квалификация в программировании — это отнюдь не только программирование. Тут надо знать, например, обширные разделы прикланой математики. LVV>>А это дает только вуз. Или тебе все это по книжкам изучать придется. Теорию графов, например.
N>Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще.
Угу. Если честно я бы предпочел изучить по книжкам теорию графов(что и сделаю если мне понадобится, т.к. то что в вузе изучали уже забыл), а ВУЗ-е чтобы мне объяснили хотя бы ООП тот же, на уровне MIT хотя бы.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Anatolix, Вы писали:
LVV>>Через много лет приезжаю в Астрахань работать преподавателем. Угадайте с трех раз, какой предмет мне пришлость преподавать в первый же семестр? A>Ну скажем так, не все собираются быть преподавателями в Астрахани
Ты знаешь, я тоже не собирался!
A>Я вот чуствую, что мне несколько другие вещи пригодятся в будущем. Кстати обрати внимание для подтверждения тезиса ты даже выбрал академическую среду, вот так на вскидку можешь привести пример где тебе пригодились ЧМ вне академической среды.
ЧМ сейчас не вспомнить, но в графике без них никак же. А мне самому приходилось зачачи решать (в смысле — программы писать) прямо по теории графов — городская тепловая сеть, вода, канализация... Расход тепла, воды, ...
Я тогда молодой-глупый был, изобретал алгоритмы вместо того, чтобы взять теорию графов и потоки в сетях, и конкретно реализовать. A>Я на вскидку могу сказать только в том что нельзя сравнивать с нулем вещественные числа в программировании(что и без ЧМ понятно). И для людей которые численно решают диффуры при рассчете ядерных взрывов и рассчете обтекания корпуса мерседеса воздухом, таких людей относительно мало, если из-за их наличия делать вывод о абсолютной нужности ЧМ, то можно начать утверждать что основы бухгалтерии абсолютно необходимы всем программистам.
А в Ташкенте целый институт этим занимался — институт погоды. Как раз системы дифуров немерянной размерности — сеточными методами. У меня друг там работал. Таких институтов в Союзе было 4, один из них — в Ташкенте. А всего в мире — 16. Тут не знаешь, куда попадешь, и что делать придется.
Мне, например, повезло — я ось сам писал. А компилятор — не пришлось. Зато зарплат писал несколько — в бухгалтерии не знал ничего, а в компиляторах — гораздо больше. LVV>>Так что никогда не знаешь, что тебе в жизни пригодится, а что — нет. A>А опять пример из неакадемической среды?
Ну так я решил в свое время, что бухгалтерию и обработку данных программить больше не буду — надоело. Похлебал в свое время АСУ — хватит!
А друг у меня всю жизнь на системах реального времени сидит — сознательно. Тоже в обработку данных идти не хочет. И правильно делает!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Anatolix, Вы писали:
N>>Ну изучал я всю эту хрень в вузе, а реально большая часть этого мне сейчас не нужна вообще.
A>Угу. Если честно я бы предпочел изучить по книжкам теорию графов(что и сделаю если мне понадобится, т.к. то что в вузе изучали уже забыл), а ВУЗ-е чтобы мне объяснили хотя бы ООП тот же, на уровне MIT хотя бы.
Ну, так я это сейчас и делаю — годовой курс ООП. И еще много чего помимо этого.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, glyph, Вы писали:
G>Тут с завкафом надо согласиться — в криптографии перечисленные дисциплины помогут. Но они явно не краеугольны...
c завшкафом
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>По поводу адаптации я уже все выше ответил. Адаптируем, адаптируем, не беспокойся.
Еще забыл про компьютерную графику — все время про нее забываю Бесхозный курс. Там и математика, и алгоритмы, и аппаратура, и библиотеки, и С++ — не просто найти спеца. Кто возьмется?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
А>>Здесь много хороших книг по этим темам. LVV>Да, спасибо — это библиотека научных книг. LVV>Только вопрос, чем их просматривать? LVV>Там формат мне какой-то неизвестный
djvu конечно хорошо, только здесь тоже много интересного есть, и в pdf-ах.
Кстати, ну вот зачем меня в родном Универе учат таким вещам как:
1) Информационные системы
2) Проектирование информационных систем
3) Информационные технологии
4) Теория систем
5) Информационные процессы
и это ещё не предел, а 3-й курс. При этом всё программирование свелось к рисованию окошек в Дельфи на 2-м курсе и Turbo Pascal'ю на первом. ИМХО такое "высшее" полезно только дипломом.
Здравствуйте, Mazay, Вы писали:
M>Здравствуйте, LaptevVV, Вы писали:
M>djvu конечно хорошо, только здесь тоже много интересного есть, и в pdf-ах.
Спасибо! M>Кстати, ну вот зачем меня в родном Универе учат таким вещам как: M>1) Информационные системы M>2) Проектирование информационных систем M>3) Информационные технологии M>4) Теория систем M>5) Информационные процессы M> M> и это ещё не предел, а 3-й курс. При этом всё программирование свелось к рисованию окошек в Дельфи на 2-м курсе и Turbo Pascal'ю на первом. ИМХО такое "высшее" полезно только дипломом.
1. Какая специальность? Может, у вас в стандарте записано.
2. Кто учит — почти главный вопрос
ИМХО проектирование информационных систем — это нужно обязательно.
Остальное — сильно зависит от того, кто учит. Можно интересно давать, а можно — халявно.
Судя по тому, что ты пишешь о программировании — это не программистская специальность. Я в информационные системы "засунул" бы базы данных. А в информационные технологии — много чего можно затолкать — ООП, например, технологии программирования, клиент-серверную архитектуру, интерент-программирование.
Теория систем — это математическая дициплина, назначение которой я не очень понимаю.
Так же как и информационные процессы — теория информации?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали: LVV>1. Какая специальность? Может, у вас в стандарте записано.
Прикладная информатика в менеджменте. LVV>2. Кто учит — почти главный вопрос LVV>ИМХО проектирование информационных систем — это нужно обязательно.
Ага, только я долго не понимал чем ERwin лучше головы и карандаша.
LVV>Я в информационные системы "засунул" бы базы данных.
Отдельный предмет (с практикой на Access'е ) LVV> А в информационные технологии — много чего можно затолкать — ООП,
Отдельный предмет ( то самое Delphi)
LVV>Теория систем — это математическая дициплина, назначение которой я не очень понимаю.
У нас GPSS преподавали.
LVV>Так же как и информационные процессы — теория информации?
ХЗ, сдам экзамен — может пойму.
Ну и что вы хотите от специальности с таким клиническим названием?
Никакого отношения к программированию она иметь не может
> Прикладная информатика в менеджменте.
Здравствуйте, Mazay, Вы писали:
LVV>>1. Какая специальность? Может, у вас в стандарте записано. M>Прикладная информатика в менеджменте.
О Боже! Теперь еще и в менеджменте!! Блиннннннннн!!!!!!!
И очевидно, по стандарту — не программистская. LVV>>2. Кто учит — почти главный вопрос M> LVV>>ИМХО проектирование информационных систем — это нужно обязательно. M>Ага, только я долго не понимал чем ERwin лучше головы и карандаша.
Не знаю, как вам читали, а мы сначала всякие методологии даем — и объектную, и процессную. И UML даем и DFD с ERD. А инструментарий — он разный. И хорош уже тем, что проект можно напечатать, а не нарисовать!
Проект — "это докумет, между прочим!"(с)Лукашин — Ирония судьбы. LVV>>Я в информационные системы "засунул" бы базы данных. M>Отдельный предмет (с практикой на Access'е )
Неплохо! LVV>> А в информационные технологии — много чего можно затолкать — ООП, M>Отдельный предмет ( то самое Delphi)
Ну, как продолжение, — компонентную технологию, библиотеки ATL, WTL. Паттерны, в конце-концов. Интернет-программирование — там вообще немеряно читать можно! LVV>>Теория систем — это математическая дициплина, назначение которой я не очень понимаю. M>У нас GPSS преподавали.
У нас это — моделирование систем, в том числе и систем массового обслуживания. По книге Советова Борис Яковлича. Если вам по нему читали — хороший предмет — потом поймешь. Хоть и не программистский. LVV>>Так же как и информационные процессы — теория информации? M>ХЗ, сдам экзамен — может пойму.
Терия информации — полезная штука. Все архиваторы zip здесь лежат — адаптивная схема кодирования по Хаффмену используется. А именно в теории информации преподается оптимальное (неравномерное) кодирование.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, LaptevVV, Вы писали:
LVV>>По поводу адаптации я уже все выше ответил. Адаптируем, адаптируем, не беспокойся. LVV>Еще забыл про компьютерную графику — все время про нее забываю Бесхозный курс. Там и математика, и алгоритмы, и аппаратура, и библиотеки, и С++ — не просто найти спеца. Кто возьмется?
У нас Компьютерная Графика — создание шариков и кубиков в 3DMAX. Странно.
Здравствуйте, fspirit, Вы писали:
F>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>По поводу адаптации я уже все выше ответил. Адаптируем, адаптируем, не беспокойся. LVV>>Еще забыл про компьютерную графику — все время про нее забываю Бесхозный курс. Там и математика, и алгоритмы, и аппаратура, и библиотеки, и С++ — не просто найти спеца. Кто возьмется?
F>У нас Компьютерная Графика — создание шариков и кубиков в 3DMAX. Странно.
У нас это будет OpenGL, причем постановка задачи на лабах чисто математическая
Never argue with a woman who reads. It's likely she can also think. (c)
Здравствуйте, LaptevVV, Вы писали:
LVV>>По поводу адаптации я уже все выше ответил. Адаптируем, адаптируем, не беспокойся. LVV>Еще забыл про компьютерную графику — все время про нее забываю Бесхозный курс. Там и математика, и алгоритмы, и аппаратура, и библиотеки, и С++ — не просто найти спеца. Кто возьмется?
Теорию построения компиляторов не преподают? Очень зря.
Здравствуйте, Vismut, Вы писали:
V>Что вы можете мне посоветовать изучать дальше?
Обязательно, имхо, нужно поработать с STL, WinAPI. Первое, чтобы не делать велосипеды в своих разработках, второе — ну ты и сам понимаешь... Хотя, если решишь, что Windows тебе и не нужен, а *nix — это твоё счастье, то можно и не учить.
А вообще, самое лучшее, придумать себе проект (какой угодно) и реализовывать его постепенно. Обязательно будут возникать проблемы. В процессе решения этих проблем ты сможешь узнать много нового. Это если просто для обучения.
Если же есть желание найти хорошую работу в IT, то, думаю, нужно смотреть по требованиям в форумах "Предложение работы" и на соответствующих сайтах. Собственно, то что требуют, то и изучай.
Здравствуйте, LaptevVV, Вы писали:
LVV>Подробней ответить на все Ваши комментарии пока времени нет, но обязательно отвечу. LVV>Но вас уже и так пометили минусом.
А я пожалуй ему оценку поставлю
За то, что зная, что нарывается на минус все-таки написал это.
Может не столь категорично, но в каких-то моментах я с ним согласен. А хорошую аргументацию привел Anatoloix.
LVV>Не знаю, так как последние 10 лет коммерческим программированием не занимаюсь.
Может в этом причина непонимания и разногласий ?
То что вы перечислили мне лично очень интересно, но это не более, чем хобби — способ показать самому себе что я крут.
Но что-то я не вижу контор, готовых платить за перечисленные вами знания.
Вы в форум Работа заглядываете ? Что то я не вижу там ни требований знаний комбинаторики, не теории графов — почему то все требуют net, vc, базы данных....
Здравствуйте, LaptevVV, Вы писали:
kuj>>Теорию построения компиляторов не преподают? Очень зря. LVV>Это в рамках "Системное ПО" — там полкурса на это уходит.
Полкурса на компиляторы? Смешно.
P.S. Не понимаю связи между понятием "системное ПО" и понятием "компилятор". Совсем не понимаю...
Здравствуйте, LaptevVV, Вы писали:
LVV>>>Больше никого не слушай, так как LVV>>>а) я заведующий кафедрой LVV>>>б) я старше всех на форуме LVV>>>в) работал и программистом и преподавателем — знаю, что говорю kuj>>Хм, а категоричность юношеского типа... LVV>Подробней ответить на все Ваши комментарии пока времени нет, но обязательно отвечу. LVV>Но вас уже и так пометили минусом. LVV>И жаль, что в профиле Вы никак не представились. LVV>Наверное тоже молоды еще.
Ну вот, как обычно в такой ситуации — по сути дела ничего не сказали, нахамили и хлопнули дверью.
Спасибо за интересную и конструктивную беседу. LVV>А за комплимент спасибо
Это не комплимент, а просто факт. "Никого не слушайте, я единственный, кто все знает и все умеет"... LVV>Если меня еще за юношу принимают — это ИМХО неплозо!
Зависит от контекста.
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну так я решил в свое время, что бухгалтерию и обработку данных программить больше не буду — надоело. Похлебал в свое время АСУ — хватит! LVV>А друг у меня всю жизнь на системах реального времени сидит — сознательно. Тоже в обработку данных идти не хочет. И правильно делает!
А можно поинтересоваться, откуда такая нелюбовь к "обработке данных", и что Вы в данном случае под этим термином подразумеваете? До сих пор я был уверен в том, что компьютеры по определению занимаются исключительно обработкой данных — не важно откуда эти данные пришли и куда они уходят после обработки, а также в каких единицах измеряется их время жизни — в столетиях или в наносекундах. Т.е. цель любого программирования всегда заключается в автоматизации обработки данных.