Здравствуйте, INTP_mihoshi, Вы писали:
INT>Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер.
Не думаю. Мое неплохое знание ассемблера PDP-11 и х86 на практике практически не пригодилось. Так, по мелочи. Дело в том что основная масса знаний, требуемых для программирования на ассемблере это знание архитектуры целевой железки и ОС, причем на низком уровне. Знания сии весьма специфичны и не думаю что стоит на них тратить время просто ради кругозора. Лично мне кажется что начинать нужно с джавы, она очень хорошо подходит именно для приобретения базовых навыков программирования и проектирования с минимальным риском поиметь вредные привычки.
INT> Вперед на wasm.ru. INT>Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
Как раз очень серьезно ограничит, поскольку человек будет стремится в дальнейшем ковырять кишочки, а это на самых частых задачах скорее вредно, так как за деревьями начинает теряться лес. Плюс море вредных привычек вроде копипейста и безусловных переходов.
Несколько дней уже слоняюсь по вашему форуму, как мне кажется здесь действительно много
профессиональных программистов, в т.ч. и преподавателей (программирования естественно)
столичных вузов. Поэтому прошу помочь советом.
Вопрос не о том что надо знать чтоб стать програмистом, какие книжки читать и т.п. Таких тем я видел предостаточно, я не об этом. С тем что считаю нужным знать тоже давно определился, и впринципе уже знаю какую то часть этого, но не так хорошо как хотелось бы.
А вопрос вот какой: Как максимально эффективно + с минимальными затратами времени заниматься
самостоятельным изучением языка (не важно какого)) ?
На мой взгляд банальное перечитывание литературы (имею ввиду читать все подряд) не самый удачный вариант, во первых — время летящее с невероятной скоростью, во вторых на одной теории далеко не уедешь. Еще как вариант, где то встречал такую мысль что язык хорошо осваивается по необходимости, т.е. перед человеком стоит задача и хочешь не хочешь ее решай и здесь уже ищешь и осваиваешь только тот материал который необходим для конкретной задачи (ищешь ответы в факах, форумах и т.д.) и постепенно так опыта и набираешься. Это на мой взгляд хороший но тоже не идеальный вариант.
В целях эксперимента пытаюсь сейчас поступать следущим образом: половину свободного времени (
допустим 3 часа в день) читаешь теорию, вторую половину выдумываешь сам себе неочень сложные,
но незнакомые задачи и пытаешься их реализовать, через гугл, факи, форумы и т.д. В результате и практика и теория
Вот подскажите, насколько по вашему такое изучение может оказаться эффективным? И как эту эффективность можно повысить? Или может есть другие мысли по этому поводу? Очень нужен в этом плане дельный совет
И еще такой вопрос, стоит ли осваивать несколько (два-три) языка параллельно, или больше чем за один сразу браться не стоит?
Буду невероятно благодарен за помощь и советы, и прошу прощения за длинный пост
ps: речь идет об advanced изученнии языка, а не так чтоб поверхностно нахвататься
ps: видел тут темку "как учить программированию", туда меня просьба не отправлять, имхо это совершенно разные вещи
Здравствуйте, registered, Вы писали:
R>Здравствуйте, bkat, Вы писали:
B>>Попробуй поискать по сайту по ключевым словам "Хочу стать программистом" B>>Вот из последних обсуждений как раз в этом форуме.
B>>http://www.rsdn.ru/forum/?mid=599050
R>Спасибо, первым делом перед постингом искал такие темы, и этот топик прочел, но там вопросы на мой взгляд другие. В том топике (и во многих других), человек патается определиться что ему надо знать. А у мня вопрос как лучше|эффективнее определенный язык|технологию освоить
Так же как и другой язык. Надо на нем говорить и активно пользоваться.
Других способов нет.
В общем только реальный проект поможет тебе реально почувствовать язык или технологию.
INT>Это сильно зависит от того, как обучать. Если решать такие задачи, которые требуют переносимости и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
На первых этапах, изучения программирование — непоминание идет от: что-то такое регистр, память, указатели и т.д.
На той же Java-е мы оперируем уже более знакомыми понятиями: элемент (объект), набор и т.д.
Здравствуйте, bkat, Вы писали:
B>Попробуй поискать по сайту по ключевым словам "Хочу стать программистом" B>Вот из последних обсуждений как раз в этом форуме.
B>http://www.rsdn.ru/forum/?mid=599050
Спасибо, первым делом перед постингом искал такие темы, и этот топик прочел, но там вопросы на мой взгляд другие. В том топике (и во многих других), человек патается определиться что ему надо знать. А у мня вопрос как лучше|эффективнее определенный язык|технологию освоить
Здравствуйте, bkat, Вы писали:
B>Так же как и другой язык. Надо на нем говорить и активно пользоваться. B>Других способов нет. B>В общем только реальный проект поможет тебе реально почувствовать язык или технологию.
C этим я согласен, скорее всего даже не один проект. Только вот к серьезным проектам надо сначала подойти, не начнешь же с нуля. Вот как подойти, с учетом того что время критично? Начать читать все подряд книги пока не почувствуешь себя готовым для серьезного проекта? Или освоить основы, и пытаться что то делать, уже выискивая только недостающую инфу? Вот в этом то вся и загвозка...
Здравствуйте, registered, Вы писали:
R>C этим я согласен, скорее всего даже не один проект. Только вот к серьезным проектам надо сначала подойти, не начнешь же с нуля. Вот как подойти, с учетом того что время критично? Начать читать все подряд книги пока не почувствуешь себя готовым для серьезного проекта? Или освоить основы, и пытаться что то делать, уже выискивая только недостающую инфу? Вот в этом то вся и загвозка...
ну допустим есть opensource проекты. выбираешь какой тебе больше нравится и пробуешь что-то делать для него. не самый лучший вариант, но он тоже имеет право на существование.
Здравствуйте, registered, Вы писали:
R>Здравствуйте, bkat, Вы писали:
B>>Так же как и другой язык. Надо на нем говорить и активно пользоваться. B>>Других способов нет. B>>В общем только реальный проект поможет тебе реально почувствовать язык или технологию.
R>C этим я согласен, скорее всего даже не один проект. Только вот к серьезным проектам надо сначала подойти, не начнешь же с нуля.
Конечно к серьезным проектам сразу не подойдешь.
Готовся на несколько лет лет пути
Есть и проверенные способы, типа учеба в ВУЗе с последующим трудоустройством.
Учебу с работой можно и совмещать.
В общем быстро не получится. Опять же, в серьезных проектах
язык программирования — это не самая важная вещь.
On Thu, 22 Apr 2004 20:06:02 GMT, registered <forum@rsdn.ru> wrote:
Способ, на мой взгляд, наилучший для изучения какого-нибудь языка
программирования
(автора к сожалению не знаю, но сам проверял, когда С++ изучал):
Сначала обучаемому дается минимум необходимых сведений о языке
(синтаксис там, основные правила построения конструкций и т.п.).
Затем дается для решения какая-нибудь не слишком тривиальная задачка
(в смысле программу написать и отладить).
После этого учебник по языку читается как детектив .
Ну и усваивается соответственно лучше .
Скачай, установи и напиши что-нибудь в С-- (здесь)
В процессе освоишь (или хотя-бы краем глаза увидишь) и функциональное программировоние, и скриптование, и literate programming, и ассемблер, и Yacc и хз знает что еще И UNIX заодно. По крайней мере, не будешь считать, что программирование — это только C++, С# и Delphi.
Знание языка и свободное им владение — это всего лишь одно из необходимых требование для создания качественных программ. Для того, чтобы выучить язык, особых премудростей не надо, гораздо сложнее научиться правильно его применять. Общие принципы построения программ, за исключением технических ньюансов, не зависят от применяемого языка.
Поэтому, я бы посоветовал поставить перед собой задачу создания безупречной во всех отношениях программы (с точки зрения проектирования, используемых алгоритмов, проработки пользовательского интерфейса и т.д.). А для этого понадобятся не только книги по конкретному языку... Задачу придумываешь сам, но это должно быть что-то стоящее, а не просто какой-то примерчик использования языка. Кстати, если пойдешь по дороге программиста, работающего на кого-то, возможности делать то, что хочешь, может уже и не быть Так что, наслаждайся жизнью, пиши то, что хочешь и пусть это будет супер-прога. По ходу сам поймешь, что есть что, на что надо обратить особое внимание.
Здравствуйте, Leonid V. Volnin, Вы писали:
LVV>Затем дается для решения какая-нибудь не слишком тривиальная задачка LVV>(в смысле программу написать и отладить). LVV>После этого учебник по языку читается как детектив . LVV>Ну и усваивается соответственно лучше .
Этот способ обучения вроде еще Кнут внедрял
А вообще его надо уметь использовать. Задачи должны быть такие, чтобы приходилось использовать все фичи языка.
Например, для С++ должна быть задача на написание модуля, который невозможно свалить извне. Тогда придется использовать и const, и protected, и исключения...
И обязательно задачку на обобщенное программирование, чтобы без темплейтов не решалась...
Кстати, кто-нибудь видел готовые такие наборы задач?
Здравствуйте, registered, Вы писали:
R>А вопрос вот какой: Как максимально эффективно + с минимальными затратами времени заниматься R>самостоятельным изучением языка (не важно какого)) ?
Один из моих преподавателей английского сказал в свое время: "There are three ways to learn English: talking, talking and talking". С языком программирования то же самое. Ты сможешь его освоить тоько применяя, в противном случае, все, что ты прочитаешь, будет достаточно быстро забываться — то есть, изучить язык впрок не получиться.
Потому возникает вопрос — а зачем ты его хочешь изучить?
R>ps: речь идет об advanced изученнии языка, а не так чтоб поверхностно нахвататься
По моему, не может быть адвансд _изучение_ языка, может быть адвансд использование оного. Об этом очень хорошо сказано у Элджера в предисловии к его "C++: Библиотека программиста". В обоих случаях используются одни и те же синтаксические конструкции, но вот как они используются — в этом и разница.
Большое спасибо вам за советы, есть над чем подумать. Пока в вашем форуме не разобрался, не знаю как принято отвечать, по веткам или одним постом, попробую одним
B>Есть и проверенные способы, типа учеба в ВУЗе с последующим трудоустройством.
Это все замечательно, вот только есть уже ВУЗ, технический, но не программерский, второго скорей всего не будет, остается лишь вариант самостоятельного осваивания
INT>Рекомендую метод шоковой терапии
INT>Скачай, установи и напиши что-нибудь в С-- (здесь) INT>В процессе освоишь (или хотя-бы краем глаза увидишь) и функциональное программировоние, и скриптование, и literate programming, и ассемблер, и Yacc и хз знает что еще И UNIX заодно. По крайней мере, не будешь считать, что программирование — это только C++, С# и Delphi.
Знать не знал что существует С-- Посмотрю обязательно
LVV>>Затем дается для решения какая-нибудь не слишком тривиальная задачка LVV>>(в смысле программу написать и отладить). LVV>>После этого учебник по языку читается как детектив . LVV>>Ну и усваивается соответственно лучше .
INT>Этот способ обучения вроде еще Кнут внедрял INT>А вообще его надо уметь использовать. Задачи должны быть такие, чтобы приходилось использовать все фичи языка.
INT>Например, для С++ должна быть задача на написание модуля, который невозможно свалить извне. Тогда придется использовать и const, и protected, и исключения...
INT>И обязательно задачку на обобщенное программирование, чтобы без темплейтов не решалась...
INT>Кстати, кто-нибудь видел готовые такие наборы задач?
Я тоже к этому больше склоняюсь, когда то также осваивал делфи, прочитал лишь азы, дальше само пошло. Вот только делфи и рядом не стоит по сложности с более серьезными языками. Пытался также поступить с С++ — не выходит Решил пока продолжить чтение книжек И присоединяюсь к вопросу, где бы раздобыть таких задач? было бы здорово
R>>А вопрос вот какой: Как максимально эффективно + с минимальными затратами времени заниматься R>>самостоятельным изучением языка (не важно какого)) ?
M>Один из моих преподавателей английского сказал в свое время: "There are three ways to learn English: talking, talking and talking". С языком программирования то же самое. Ты сможешь его освоить тоько применяя, в противном случае, все, что ты прочитаешь, будет достаточно быстро забываться — то есть, изучить язык впрок не получиться. M>Потому возникает вопрос — а зачем ты его хочешь изучить?
Ну ответ в твоем же посте чуть ниже (ничего что я на "ты"?) Естественно, только для активного использования. Цели лишь при удобном случае показать свои "невероятные" знания не стоит
Жаль только никто не высказался по поводу:
R>>И еще такой вопрос, стоит ли осваивать несколько (два-три) языка параллельно, или больше чем за один сразу браться не стоит?
Что думаете по этому поводу? И хотелось бы узнать как это проходило у вас?
Здравствуйте, registered, Вы писали:
R>А вопрос вот какой: Как максимально эффективно + с минимальными затратами времени заниматься R>самостоятельным изучением языка (не важно какого)) ?
Практика, практика и еще раз практика.
Придумай себе задачу. Большую, но не особо сложную. Сделай. Почитай книги. Пойми, что все можно было сделать в два раза проще. Переделай. Почитай книги... (повторить N раз). Придумай себе другую задачу. Сделай. Почитай книги...
R>В целях эксперимента пытаюсь сейчас поступать следущим образом: половину свободного времени ( R>допустим 3 часа в день) читаешь теорию, вторую половину выдумываешь сам себе неочень сложные, R>но незнакомые задачи и пытаешься их реализовать, через гугл, факи, форумы и т.д. В результате и практика и теория
И в результате прочитанное в книге не запоминается, т.к. сейчас ненужно, а за время чтения мысль от практики уходит... Я бы так не смог.
R>И еще такой вопрос, стоит ли осваивать несколько (два-три) языка параллельно, или больше чем за один сразу браться не стоит?
Когда что-то пишешь, надо окунаться в процесс... На двух-трех языках такое плохо получается, разве что один из них скриптовый и служит для оптимизации написания программы на другом.
Здравствуйте, registered, Вы писали:
R>>>И еще такой вопрос, стоит ли осваивать несколько (два-три) языка параллельно, или больше чем за один сразу браться не стоит?
Да, надо, но лучше в рамках одной задачи. Например, написать программу со суриптами на Lua (или другой скриптовалке) или что-нибудь работающее с SQL запросами или, наконец, конвертилку из одного языка в другой, написанную на третьем
Вообще, концентрироваться на одном языке ИМХО вредно. Изучая несколько языков ты будешь понимать каждый из них лучше, чем если бы ты изучал все это время только один этот. Ты будешь понимать, чем обосновано каждая фича языка и что было бы, если бы ее не было
Вот основные типы языков с которыми стоит познокомиться. Традиционный императивный (С++, С#, etc), объектный (Smalltalk, Self etc.), функциональный (Haskell, OCaml, MoscowML etc.), логический (Prolog, HOL etc/). Это обязательно.
Кроме того: регулярные выражения, скриптование (Lua, Perl etc.), основы ассемблера, лексические анализаторы (Yacc/Lex etc/), стековые языки (MSIL, joy etc.). Это тоже обязательно, но можно отложить на потом.
Еще надо иметь представление о том, как программы компилируются/интерпретируются.
Не нужно вдаваться в дебри (читай — прикладный библиотеки) каждого языка. Главное — понимать, какого типа задачи лучше всего решились бы именно на этом языке. Тогда ты сможешь лучше понимать сами задачи и реализовывать их более правильно на любом другом.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Не нужно вдаваться в дебри (читай — прикладный библиотеки) каждого языка. Главное — понимать, какого типа задачи лучше всего решились бы именно на этом языке. Тогда ты сможешь лучше понимать сами задачи и реализовывать их более правильно на любом другом.
А вот с этим можно немного и поспорить...
Доступные библиотеки и вообще среда программирования еще как влияют
на процесс программирования и итоговый результат.
Так что на это тоже стоит тратить время и обращать внимание.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Вообще, концентрироваться на одном языке ИМХО вредно. Изучая несколько языков ты будешь понимать каждый из них лучше, чем если бы ты изучал все это время только один этот. Ты будешь понимать, чем обосновано каждая фича языка и что было бы, если бы ее не было
Не согласен. Изучение спектра языков полезно когда ты уже прочно стоишь на ногах. Сразу хвататься за изучение всего подряд не зная хорошо хотя бы одного языка чревато зазря потерянным временем.
Здравствуйте, registered, Вы писали:
R>Здравствуйте, bkat, Вы писали:
B>>Так же как и другой язык. Надо на нем говорить и активно пользоваться. B>>Других способов нет. B>>В общем только реальный проект поможет тебе реально почувствовать язык или технологию.
R>C этим я согласен, скорее всего даже не один проект. Только вот к серьезным проектам надо сначала подойти, не начнешь же с нуля. Вот как подойти, с учетом того что время критично? Начать читать все подряд книги пока не почувствуешь себя готовым для серьезного проекта? Или освоить основы, и пытаться что то делать, уже выискивая только недостающую инфу? Вот в этом то вся и загвозка...
А что в вузе нет задач по математике, физике итд. Там расчетов непочатый край. Заодно освоишь кучу алгоритмов. Котрые затем тебе сильно пригодятся.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, registered, Вы писали:
R>Спасибо, первым делом перед постингом искал такие темы, и этот топик прочел, но там вопросы на мой взгляд другие. В том топике (и во многих других), человек патается определиться что ему надо знать. А у мня вопрос как лучше|эффективнее определенный язык|технологию освоить
Ну, сам же знаешь! Писать, писать и еще раз писать!
А что — уж тут сам себе задачу по вкусу выбираешь.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, 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, когда мне это все уже и не надо будет
Знать каждый в совершенстве нереально. Уметь пользоваться и знать, для каких задач этот язык подходит лучше всех других (это ИМХО основной критерий знания языка) — реально и необходимо.
Это очень похоже на качание мускулатуры. Ты разными языками тренируешь разные группы мозговых "мускулов". Если нагрузка слишком мала — ты остаешься на месте. Если слишком велика — то ты не можешь поднять вес/решаить задачу и тоже не двигаешься. А вот если нагрузка правильно подобрана, если ты решаешь задачи и воспринимаешь информацию на грани способностй, когда мозги/мышцы скрипят, болят, но работают, вот тогда ты развиваешься как программист.
В рамках одного-двух языков достигнуть этого гораздо труднее.
Разумеется, язык, который является твоим основным инстркментом нужно знать хорошо и глубоко. Но, ограничившись одним-двумя языками, ты скоро перестанешь развиваться и эти одни-два языка будешь понимать и чувствовать не так хорошо, как если бы ты имел представление и опыт работы с другими.
Здравствуйте, AndrewVK, Вы писали:
INT>>Согласен, сначала надо хорошо изучить один язык, и этот язык — ассемблер.
AVK>Лично мне кажется что начинать нужно с джавы, она очень хорошо подходит именно для приобретения базовых навыков программирования и проектирования с минимальным риском поиметь вредные привычки.
Ну, смотря кого мы хотим в результате получить
Хотя согласен, для самостоятельного изучения действительно правильнее начинать с джавы.
INT>> Вперед на wasm.ru. INT>>Я серьезно. Ассемблер — единственное, что не ограничит сознание при изучении его как первого языка.
AVK>Как раз очень серьезно ограничит, поскольку человек будет стремится в дальнейшем ковырять кишочки, а это на самых частых задачах скорее вредно, так как за деревьями начинает теряться лес. Плюс море вредных привычек вроде копипейста и безусловных переходов.
Это сильно зависит от того, как обучать. Если решать такие задачи, которые требуют переносимости и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
Но это все толко для тех, кому нужны глубокие знания и только с очень хорошим преподавателем.
Так что, для человека без опыта программирования и для самостоятельного изучения — лучше начинать с джавы.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Это сильно зависит от того, как обучать.
Речь, напомню, о самообучении.
INT> Если решать такие задачи, которые требуют переносимости
Переносимость ассемблерного кода? Кхм.
INT> и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
А оно действительно надо? Сдается мне что последнее время ценность этих знаний заметно поубавилась.
Здравствуйте, AndrewVK, Вы писали:
INT>>Это сильно зависит от того, как обучать. AVK>Речь, напомню, о самообучении.
Поэтому я согласился, что в этом случаи надо начинать с чего-то вроде джавы.
INT>> Если решать такие задачи, которые требуют переносимости
AVK>Переносимость ассемблерного кода? Кхм.
Ну, не переносимость а многоплатформенность. Например, прочитать ксмыл и вывести как дерево в виндах и в икс-вин. Путь подумает, как выделить и изолировать платформо-зависимые части программы.
INT>> и структурности и вынуждают самому надстраивать абстракции, то мы получим очень глубокое понимание откуда вся это абстактность взялась и как она соотносится с тем, что собственно делает компьютер.
AVK>А оно действительно надо? Сдается мне что последнее время ценность этих знаний заметно поубавилась.
"Это в значительной мере зависит от того, куда ты хочешь попасть" (с) Алиса в зазеркалье
Кстати, цитата с wasm.ru
о вреде ассемблера как первого языка
Сегодня спросил ребёнка,
почему тебе не хочется писать на Паскале
или С?
Ответ поразил (цитирую буквально буква в букву):
Во первых неинтересно.
Во вторых меньше понятно.
В третьих боишься как бы компилятор не
сделал что то неправильно.
Слова 7и летнего ребёнка.
Правда учили его не так как написано в книжках.
Он например чётко понимает что не каких "переходов"
реально не существует.
Существует IP по адрессу которого выполняется команда,
и арифметические правила изменения IP, автоматически:
текущие значение + размер текущей команды,
или автоматически + значение из специальных команд,
или загрузка в него значения командой.
Здравствуйте, registered.
Имхо вначале нужно освоить язык, решая задачи, приведённые в книге, а после освоения браться за свой собственный проект, не боясь его сложности. В процессе работы вы сможете закрепить полученные знания, получить немного опыта. Новые знания тоже появятся.