Здравствуйте, registered, Вы писали:
R>ps: речь идет об advanced изученнии языка, а не так чтоб поверхностно нахвататься R>ps: видел тут темку "как учить программированию", туда меня просьба не отправлять, имхо это совершенно разные вещи
Напиши систему тестирования по С++ — все сразу и освоишь!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, AndrewVK, Вы писали:
INT>>Вообще, концентрироваться на одном языке ИМХО вредно. Изучая несколько языков ты будешь понимать каждый из них лучше, чем если бы ты изучал все это время только один этот. Ты будешь понимать, чем обосновано каждая фича языка и что было бы, если бы ее не было
AVK>Не согласен. Изучение спектра языков полезно когда ты уже прочно стоишь на ногах. Сразу хвататься за изучение всего подряд не зная хорошо хотя бы одного языка чревато зазря потерянным временем.
Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер. Вперед на wasm.ru.
Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
Эх, наверно так и надо учить программистов... Сначала ассемблер, потом учимся писать транслятор, потом на этом трансляторе сами реализуем структурность, ООП и прочую хренотень.
Здравствуйте, bkat, Вы писали:
B>А вот с этим можно немного и поспорить... B>Доступные библиотеки и вообще среда программирования еще как влияют B>на процесс программирования и итоговый результат. B>Так что на это тоже стоит тратить время и обращать внимание.
Тратить время и обращать внимания — да, надо. Но вдавать сяво всякие случайные тонкости вроде отличия перегрузки префиксного и постфиксного инкремента не обязательно.
И библиотеки, кстати, тоже стоит рассматривать не только по-отдельности, но и сравнивать аналогичные на том же и других языках.
Еще раз большое всем спасибо
R>>В целях эксперимента пытаюсь сейчас поступать следущим образом: половину свободного времени ( R>>допустим 3 часа в день) читаешь теорию, вторую половину выдумываешь сам себе неочень сложные, R>>но незнакомые задачи и пытаешься их реализовать, через гугл, факи, форумы и т.д. В результате и практика и теория
T>И в результате прочитанное в книге не запоминается, т.к. сейчас ненужно, а за время чтения мысль от практики уходит... Я бы так не смог.
Ну в книгах ведь тоже есть примеры, и то что читаешь обычно сразу пробуешь, по крайней мере стараюсь так делать, поэтому не зказал бы что совсем не запоминается
T>Придумай себе задачу. Большую, но не особо сложную. Сделай. Почитай книги. Пойми, что все можно было сделать в два раза проще. Переделай. Почитай книги... (повторить N раз). Придумай себе другую задачу. Сделай. Почитай книги...
Спасибо за совет, обязательно буду пробовать
T>Когда что-то пишешь, надо окунаться в процесс... На двух-трех языках такое плохо получается, разве что один из них скриптовый и служит для оптимизации написания программы на другом.
Вот здесь да, действительно сложно переключаться с одного на другой, почему я об этом и спросил. Хотя наверное можно и привыкнуть .. А если по одному учить,разобрался к примеру с одним, перешел на другой теперь первый будет постепенно из головы вылетать (этож не один-два дня)
S> А что в вузе нет задач по математике, физике итд. Там расчетов непочатый край. Заодно освоишь кучу алгоритмов. Котрые затем тебе сильно пригодятся.
Есть, только это сплошные формулы, формулы, формулы, не слишком однообразно получится? Пробовал писать программы для расчетов курсовых к примеру, и особой сложности у меня это не вызвало. А вот сейчас например не могу в C++ сделать поиск в строке слэша "\", ( сделаю конечно чуть позже, дойдет до меня наверное ) — вот такие моменты довольно часто создают сложности, чем обычный расчет по формулам, или я себе плохо представляю значимость алгоритмов
LVV>Напиши систему тестирования по С++ — все сразу и освоишь!
Ага, с этого и надо начинать изучение
INT>Вот основные типы языков с которыми стоит познокомиться. Традиционный императивный (С++, С#, etc), объектный (Smalltalk, Self etc.), функциональный (Haskell, OCaml, MoscowML etc.), логический (Prolog, HOL etc/). Это обязательно. INT>Кроме того: регулярные выражения, скриптование (Lua, Perl etc.), основы ассемблера, лексические анализаторы (Yacc/Lex etc/), стековые языки (MSIL, joy etc.). Это тоже обязательно, но можно отложить на потом. INT>Еще надо иметь представление о том, как программы компилируются/интерпретируются.
INT>Не нужно вдаваться в дебри (читай — прикладный библиотеки) каждого языка. Главное — понимать, какого типа задачи лучше всего решились бы именно на этом языке. Тогда ты сможешь лучше понимать сами задачи и реализовывать их более правильно на любом другом.
Хоть не много это будет не по теме, но, я вот читаю все эти списки невероятных размеров (вышеприведенный еще относительно небольшой), резюмэ некоторые просматривал, иногда чуть со стула не падаешь, это все вообще знать раельно ? Я человек не особо ленивый, просто кажется мне, что одной жизни просто не хватит, а если и хватит, то освоить это все можно только к годам 50 — 60, когда мне это все уже и не надо будет
M>Один из моих преподавателей английского сказал в свое время: "There are three ways to learn English: talking, talking and talking". LVV>Ну, сам же знаешь! Писать, писать и еще раз писать!
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, AndrewVK, Вы писали:
INT>>>Вообще, концентрироваться на одном языке ИМХО вредно. Изучая несколько языков ты будешь понимать каждый из них лучше, чем если бы ты изучал все это время только один этот. Ты будешь понимать, чем обосновано каждая фича языка и что было бы, если бы ее не было
AVK>>Не согласен. Изучение спектра языков полезно когда ты уже прочно стоишь на ногах. Сразу хвататься за изучение всего подряд не зная хорошо хотя бы одного языка чревато зазря потерянным временем.
INT>Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер. Вперед на wasm.ru. INT>Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
INT>Эх, наверно так и надо учить программистов... Сначала ассемблер, потом учимся писать транслятор, потом на этом трансляторе сами реализуем структурность, ООП и прочую хренотень.
Но ведь не факт что на асме вообще придется когда-либо писать, как я понимаю его сейчас используют в очень редких случаях, только для драйверов и др. специфических вещей, не черевато это зря потраченным временем ?
Re[7]: Занятная статистика "сравнение СССР и россии"
Здравствуйте, registered, Вы писали:
INT>>Эх, наверно так и надо учить программистов... Сначала ассемблер, потом учимся писать транслятор, потом на этом трансляторе сами реализуем структурность, ООП и прочую хренотень.
R>Но ведь не факт что на асме вообще придется когда-либо писать, как я понимаю его сейчас используют в очень редких случаях, только для драйверов и др. специфических вещей, не черевато это зря потраченным временем ?
Вот уж на асме писать придется точно, так как все, что ты пишешь транслируется в асм
И он очень прост. Написание небольших программ на нем не сложнее написания аналогичных на высокоуровневых языках. Главное, не суди ни о каком языке заочно. Посмотри примеры прграмм на асме на wasm.ru, а потом уже принимай решение.
Re[3]: Занятная статистика "сравнение СССР и россии"
Здравствуйте, registered, Вы писали:
INT>>Вот основные типы языков с которыми стоит познокомиться. Традиционный императивный (С++, С#, etc), объектный (Smalltalk, Self etc.), функциональный (Haskell, OCaml, MoscowML etc.), логический (Prolog, HOL etc/). Это обязательно. INT>>Кроме того: регулярные выражения, скриптование (Lua, Perl etc.), основы ассемблера, лексические анализаторы (Yacc/Lex etc/), стековые языки (MSIL, joy etc.). Это тоже обязательно, но можно отложить на потом. INT>>Еще надо иметь представление о том, как программы компилируются/интерпретируются.
INT>>Не нужно вдаваться в дебри (читай — прикладный библиотеки) каждого языка. Главное — понимать, какого типа задачи лучше всего решились бы именно на этом языке. Тогда ты сможешь лучше понимать сами задачи и реализовывать их более правильно на любом другом.
R>Хоть не много это будет не по теме, но, я вот читаю все эти списки невероятных размеров (вышеприведенный еще относительно небольшой), резюмэ некоторые просматривал, иногда чуть со стула не падаешь, это все вообще знать раельно ? Я человек не особо ленивый, просто кажется мне, что одной жизни просто не хватит, а если и хватит, то освоить это все можно только к годам 50 — 60, когда мне это все уже и не надо будет
Знать каждый в совершенстве нереально. Уметь пользоваться и знать, для каких задач этот язык подходит лучше всех других (это ИМХО основной критерий знания языка) — реально и необходимо.
Это очень похоже на качание мускулатуры. Ты разными языками тренируешь разные группы мозговых "мускулов". Если нагрузка слишком мала — ты остаешься на месте. Если слишком велика — то ты не можешь поднять вес/решаить задачу и тоже не двигаешься. А вот если нагрузка правильно подобрана, если ты решаешь задачи и воспринимаешь информацию на грани способностй, когда мозги/мышцы скрипят, болят, но работают, вот тогда ты развиваешься как программист.
В рамках одного-двух языков достигнуть этого гораздо труднее.
Разумеется, язык, который является твоим основным инстркментом нужно знать хорошо и глубоко. Но, ограничившись одним-двумя языками, ты скоро перестанешь развиваться и эти одни-два языка будешь понимать и чувствовать не так хорошо, как если бы ты имел представление и опыт работы с другими.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер.
Не думаю. Мое неплохое знание ассемблера PDP-11 и х86 на практике практически не пригодилось. Так, по мелочи. Дело в том что основная масса знаний, требуемых для программирования на ассемблере это знание архитектуры целевой железки и ОС, причем на низком уровне. Знания сии весьма специфичны и не думаю что стоит на них тратить время просто ради кругозора. Лично мне кажется что начинать нужно с джавы, она очень хорошо подходит именно для приобретения базовых навыков программирования и проектирования с минимальным риском поиметь вредные привычки.
INT> Вперед на wasm.ru. INT>Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
Как раз очень серьезно ограничит, поскольку человек будет стремится в дальнейшем ковырять кишочки, а это на самых частых задачах скорее вредно, так как за деревьями начинает теряться лес. Плюс море вредных привычек вроде копипейста и безусловных переходов.
Здравствуйте, AndrewVK, Вы писали:
INT>>Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер.
AVK>Лично мне кажется что начинать нужно с джавы, она очень хорошо подходит именно для приобретения базовых навыков программирования и проектирования с минимальным риском поиметь вредные привычки.
Ну, смотря кого мы хотим в результате получить
Хотя согласен, для самостоятельного изучения действительно правильнее начинать с джавы.
INT>> Вперед на wasm.ru. INT>>Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
AVK>Как раз очень серьезно ограничит, поскольку человек будет стремится в дальнейшем ковырять кишочки, а это на самых частых задачах скорее вредно, так как за деревьями начинает теряться лес. Плюс море вредных привычек вроде копипейста и безусловных переходов.
Это сильно зависит от того, как обучать. Если решать такие задачи, которые требуют переносимости и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
Но это все толко для тех, кому нужны глубокие знания и только с очень хорошим преподавателем.
Так что, для человека без опыта программирования и для самостоятельного изучения — лучше начинать с джавы.
INT>Это сильно зависит от того, как обучать. Если решать такие задачи, которые требуют переносимости и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
На первых этапах, изучения программирование — непоминание идет от: что-то такое регистр, память, указатели и т.д.
На той же Java-е мы оперируем уже более знакомыми понятиями: элемент (объект), набор и т.д.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Это сильно зависит от того, как обучать.
Речь, напомню, о самообучении.
INT> Если решать такие задачи, которые требуют переносимости
Переносимость ассемблерного кода? Кхм.
INT> и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
А оно действительно надо? Сдается мне что последнее время ценность этих знаний заметно поубавилась.
Здравствуйте, AndrewVK, Вы писали:
INT>>Это сильно зависит от того, как обучать. AVK>Речь, напомню, о самообучении.
Поэтому я согласился, что в этом случаи надо начинать с чего-то вроде джавы.
INT>> Если решать такие задачи, которые требуют переносимости
AVK>Переносимость ассемблерного кода? Кхм.
Ну, не переносимость а многоплатформенность. Например, прочитать ксмыл и вывести как дерево в виндах и в икс-вин. Путь подумает, как выделить и изолировать платформо-зависимые части программы.
INT>> и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
AVK>А оно действительно надо? Сдается мне что последнее время ценность этих знаний заметно поубавилась.
"Это в значительной мере зависит от того, куда ты хочешь попасть" (с) Алиса в зазеркалье
Кстати, цитата с wasm.ru
о вреде ассемблера как первого языка
Сегодня спросил ребёнка,
почему тебе не хочется писать на Паскале
или С?
Ответ поразил (цитирую буквально буква в букву):
Во первых неинтересно.
Во вторых меньше понятно.
В третьих боишься как бы компилятор не
сделал что то неправильно.
Слова 7и летнего ребёнка.
Правда учили его не так как написано в книжках.
Он например чётко понимает что не каких "переходов"
реально не существует.
Существует IP по адрессу которого выполняется команда,
и арифметические правила изменения IP, автоматически:
текущие значение + размер текущей команды,
или автоматически + значение из специальных команд,
или загрузка в него значения командой.
Здравствуйте, registered.
Имхо вначале нужно освоить язык, решая задачи, приведённые в книге, а после освоения браться за свой собственный проект, не боясь его сложности. В процессе работы вы сможете закрепить полученные знания, получить немного опыта. Новые знания тоже появятся.