|
|
Возраст: 37 C нами с 18.10.2005 Репутация: 172.8
|
|
Начать лучше с Delphi А после и С.
|
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
switch писал(а): |
seb, с чего посоветуешь начать ?
|
я ж написал - с изучения той _аппаратной_ архитектуры, которая тебя интересует. если тебе интересует ibm pc совместимые компьютеры типа того который у тебя дома - изучай его, из чего он состоит (что такое материнская плата, процессор, память и т.д.), как работает (как передаются данные между устройствами, что такое шина и т.д.)
switch писал(а): |
Просто хотел самостоятельно изучать программирование, а что знаю, так это на школьном уровне - бэсик да паскаль, и то не в совершенстве. Думал начать с Срр, посоветовали как раз с ассемблера, мол понять как, откуда, почему.
|
я начинал в школе с алгоритмов которые схемами, всякими квадратиками, ромбиками рисуются + бейсик и чуть чуть Pascal. Одновременно читал книжку про операционную систему (DOS), про её команды, что такое файл, каталог, архиватор и т.д.
Раз уж взялся писать оффтопик, позволю себе небольшое лирическое отступление. Расскажу о своём самом большом потрясении. Дело было на уроке информатики в школе, там при загрузке компа появлялось меню: 1) Basic 2) Pascal 3) DOS и вот я как-то ради интереса выбрал пункт 2 - Pascal - что это такое я себе представлял смутно, если вообще представлял ну загрузилось IDE Turbo Pascal'я и я стал тупо лазить по меню, нажимать всякие пункты и смотреть что происходит. И вот в одном из меню я увидел пункт "Скомпилировать в EXE файл". всё. меня поразила молния ! именно увидев его я понял для чего собственно я всё изучал (блоксхемы, basic) - "Так вот откуда берутся ПРОГРАММЫ !!!" я был поражён ! Оказывается можно написать программу на языке программирования и получится EXE файл который сможет делать все те штуки которые делают другие программы из exe файлов ! Basic был заброшен, потому что у него в меню не было "Скомпилировать в EXE файл", и я стал изучать Pascal
Потом как не странно была книжка "Программирование на ассемблере для MS DOS" %) потому что меня страшно заинтересовало что же это за файлы то такие exe и com, как они устроены внутри и почему работают ? + продолжал изучать Pascal.
Но это уже всё не имеет отношения к теме так как тема то про ассемблер. да ?
ps: для чего я всё это написал ? а вот для чего - Занимайся тем что тебя больше всего интересует, если тебя интересует именно программирование - изучай математику, потому что программирование - это алгоритмы и математика. Обязательно прочитай Д. Кнут "Искусство программирования". Да, ассемблер здесь совсем не причём.
|
_____________________________ IRC WeNet #programming
jid: seb2000@jabber.ru
|
|
|
|
|
|
|
C нами с 04.02.2005 Репутация: 93.4
|
|
Начать изучать программирования с асма? Зачем вообще изучать асм? Только ради личного инетреса, ну или если ты уже кодишь как-нибудь контроллеры, но тогда ты его и так должен к этому моменту знать, да и знать надо не асм а этот самый контроллер.
Языки программирования не изучают. Изучают процессоры, фрэймворки, библиотеки в зависмости от языка. Ну и алгоритмы (если вдруг решил стать программистом-математиком).
Если видишь программирование своей профессией - изучай ООП и базы данных, не надо терять время на ассемблер. Бери VB - попробуй алгоритмы и задачки из книжек, потом попробуй прикрутить к этому инетрфейс. Дальше берешься за основы архитектуры БД и T-SQL. Потом переезжаешь на C# или Java и начинаешь вникать в ООП и Паттерны, параллельно изучая фреймворк, ну а дальше самому будет понятно, что тебе в жизни надо. Учти только, что с нуля очень долго и тяжело.
Цитата: |
изучай математику, потому что программирование - это алгоритмы и математика
|
Так было 20 лет назад, сейчас программирование это на 100% не математика и на 90% не алгоритмы.
|
_____________________________ Think negative
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
Quintessence, я кроме системного программирования другие подвиды таковым не считаю.
А системного программисту с ассемблером очень полезно быть знакомым. + как минимум надо знать основные структуры данных и алгоритмы работы с ними. Пока за 5 лет активного творчества ни разу не столкнулся ни с C#, ни с паттернами, ни даже с STL. В основном java и С + asm. Иногда С++, где это удобнее.
Как говорил наш преподаватель ИВТ и теории алгоритмов - сейчас пытаются заставить писать программы не программистов и ни к чему хорошему это привести не может.
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 08.01.2006 Репутация: 128.1
|
|
Прочитал топик и выскажу своё мнение.
Для начинающего изучать асемблер- тёмный лес, мало у какого начинающего хватит терпения и знаний для изучения этого языка...
Я считаю, что начать лучше с языка уровня оболочки, это достаточно легко, можно увидеть результат и не заморачиваться с отладной...тупой скриптовый язык...
Мне лично нравится shell...достаточно просто, незатейливо и всегда есть команда man shell ))
Потом можно переходить со спокойной душой на C...Ибо замечательный язык, не такой уж сложный и использовать можно где угодно
Я поклонник юниксов, поэтому такой вот набор получается. Ибо будущее за open source.
|
|
|
|
|
|
|
|
C нами с 04.02.2005 Репутация: 93.4
|
|
Цитата: |
я кроме системного программирования другие подвиды таковым не считаю.
|
Потрясающий шовинизм, а я то думал, что подобное нашей профессии не свойственно.
Цитата: |
Как говорил наш преподаватель ИВТ и теории алгоритмов - сейчас пытаются заставить писать программы не программистов и ни к чему хорошему это привести не может.
|
Кто заставляет? Зачем?
К сожалению, большинство наших профессоров слишком далеки от жизни и реальных задач, а также абсолютно не имеют представления о современных технологиях разработки. Алгоритмы это конечно хорошо и нужно, но на одних алгоритмах далеко не уедешь (а точнее никуда не уедешь)
Цитата: |
Пока за 5 лет активного творчества ни разу не столкнулся ни с C#, ни с паттернами, ни даже с STL. В основном java и С + asm. Иногда С++, где это удобнее.
|
Зачем вам java тогда? Какой смысл в этом высказывании? - Современные языки и продвинутые методики ООП - это для лошков, которые не умеют писать алгоритмы? Функциональное программирование, тогда вообще для грудных детей, да? И прикладное ПО - это игрушки для секретарш и они сами для себя его пишут.
|
_____________________________ Think negative
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
Quintessence писал(а): |
Цитата: |
изучай математику, потому что программирование - это алгоритмы и математика
|
Так было 20 лет назад, сейчас программирование это на 100% не математика и на 90% не алгоритмы.
|
Это прекрасно ! Чем больше людей будут так считать, тем меньше будет конкуренция и выше зарплаты у настоящих программистов !
информатика - это не то, чем занимаются в школе (и большинстве вузов) на уроке информатики. информатика - это наука и в ней есть например такие разделы как:
- Криптография
- Теория графов
- Математическая логика
- Теория автоматов
- Теория сложности вычислений
- Поиск данных
как во всём этом разобраться и понять не разбираясь в математике ? И это не какие-то теоретические науки, с ними постоянно сталкиваешся. Например наипростейшая база данных учёта выданых IP адресов. Содержит список сетей и список подсетей в них которые заняты. Возникла задача построить список не занятых, а свободных подсетей и опля ! Как понять, можно вычислить этот список по формуле или придётся заниматься перебором вариантов ? "Теория сложности вычислений" А ведь это абсолютнейше прикладная задача по автоматизации учёта...
|
_____________________________ IRC WeNet #programming
jid: seb2000@jabber.ru
|
|
|
|
|
|
|
C нами с 15.04.2005 Репутация: 133.2
|
|
Шовинизм проявляется тогда, когда начинают считать какой-то язык лучше остальных. Увы, видимо на сегодняшний день универсального языка применимого во всех задачах просто не существует. Уверенность в том, что ассемблер (или любой другой язык) не нужен, потому что текущие задачи неплохо решаются в рамках используемого языка весьма поверхностна.
Язык, библиотеки, фреймворки, среды разработки — это всего лишь молоток, гвозди и пиломатериалы. Их надо уметь применять. Собственно от того, что именно планируется построить и выбираются те или иные инструменты и способы ведения работ. Да, можно с уверенностью сказать что сейчас всё больше строят типичные панельные конструкции, но ещё никто не отменял специфические разработки, хотя их в разы меньше. Но для того чтобы строить хоть что-то адекватное в любом стиле надо быть, как минимум, знакомым с остальными.
Общая тенденция такова, что программирование сейчас не искусство (исскуство и бизнес плохо совместимые вещи), а обычное ремесло (а вот управлять ремеслом прямая задача бизнеса). Поэтому проще набирать десяток таджиков, которые умеют просто и надёжно пользоваться готовыми инструментами, чем возиться с "самородками" (прямой переход количества в качество).
Впрочем, анология со строительством здесь несколько неполна. Решение типичной задачи программирования это некий экстремум функций времени, затрат и соответствия требованиям заказчика.
Удивила фраза "алгоритмы не нужны", это при том что подавляющее большинство применямых языков — алгоритмические, какое-то странное противоречие. Алгоритм в данном случае это формальное описание поведения программы, будь то управление базами данных, пользовательские интерфейсы, математические расчёты. Язык программирования это способ записи формальной алгоритмической логики в виде "понятном" исполнительной системе (компьютеру). Проще всего представить что мы разговариваем на русском, а компьютер на японском, а наш язык программирования — английский, который понимаем и мы и компьютер. Мы переводим свой формальный алгоритм на русском в английский (собственно формализуем запись в рамках выбранного языка), который компилятор переводит на японский. И от того, насколько мы знаем английский (собственно сам язык, базовые конструкции), правописание (базовые методики, парадигмы), его историю и литературный фонд (библиотеки, опыт разработчиков, алгоритмы) и зависит наша производительность (умолчим о том, насколько хорошо и точно английский переводится в японский). Будет ли лишним знать при этом японский (ассемблер)? Даже если и не общаться на нём с компьютером мы всегда будем приблизительно представлять во что превращаются фразы на английском, который ему весьма и весьма неродственен. Это сложный вопрос и зависит от того, что именно человек хочет получать от своей работы — только деньги или только удовольствие или и деньги и удовольствие. Более того, некоторые конструкции ассемблера (японского языка) имеют больший коэффициент эффективности и невыразимы в рамках нашего "промежуточного" языка. При универсализации мы всегда теряем в гибкости.
По моему скромному мнению, различия между современными языками и средами разработки достаточно условны (конечно в рамках решаемых задач). Более того, практически все языки обросли необходимыми инструментами, аналогичными другим языкам. Например, если нам потребуется заменить в сотне-другой текстовых файлов букву "ё" на "йо" (шутки ради над ближним своим) то быстрее всего это у нас получится на каком нибудь скрипт-языке или спец-утилите (например на perl, tcl, awk или sed это решается в одну-две строки), при условии, конечно, что мы умеем ей пользоваться. Ни быстродействие, ни интерфейс нас в этом случае не сильно волнует. Однако, если мы решим сделать это продуктом для пользователя придётся задуматься о выборе языка, удобства дальнейшей сопровождаемости кода, полноте и эргономичности интерфейса и т.п. вещах. Но какой бы язык мы не выбрали, алгоритм по своей сути не изменится. От общей постановки "заменить в тексте все 'ё' на 'йо'" мы перейдём к более формальной записи алгоритма: "взять следующий символ из входного потока. если это 'ё' поместить в выходной поток 'йо' иначе поместить символ без имзенинй". На этом этапе мы уже начнём мыслить в рамках известных нам методик и языков (уже вводятся понятия "символ", который имеет какое-то машинное представление, поток — как некая (не)управляемая последовательность "символов" и т.д.).
Некоторое время назад я наивно предполагал, что программирование сводится к знанию языка и среды разработки. Увы, теперь, оглядываясь назад, я понимаю — это заблуждение. Это необходимая и важная часть, но не решающая. Решающей является теоретическая база, знание именно общих методик, умения формализовать задачи, понимать "откуда растут ноги".
Впрочем, о теории программирования и без меня написано много мудрых и толстых книг (отдельная тема — отладка, хороших книг в разы меньше, но по статистике отладка самый продолжительный и затратный этап разработки продукта — "о сколько нам открытий чудных" ). За сим резюмирую — чем больше языков и сред разработки ты знаешь, тем проще тебе мыслить в рамках любого друго языка — все они в какой-то мере родственны (ну прямая аналогия с естественными языками). Знание ассемблера, да и вообще понимание работы процессора и компьютера в целом, виртуальной машины, базовых функций ОС — это то, что отличает рядового таджика с мастерком от архитектора/проектировщика (который тоже умеет работать руками, но предпочитает головой ).
|
_____________________________ Время не существует, у него нет физического носителя в природе. Его выдумал человек, чтобы измерять скорость.
|
|
|
|
|
|
|
Возраст: 39 C нами с 10.08.2005 Репутация: 5.9
|
|
Цитата: |
Так было 20 лет назад, сейчас программирование это на 100% не математика и на 90% не алгоритмы.
|
/me аплодирует стоя.
От каментов Quintessence писаем кефиром всем #Programming
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
Quintessence, этот человек уже долгое время работает системным программистом (java в основном) в московском IT отделении одного международного банка + ведёт курсы в школе при этом отделении.
P.S. А кто по вашему эти фреймворки пишет? И на чем они написаны?
P.P.S. я не говорил что C#, java, ООП и прочее пустые навороты. Та же COM. Всё это довольно мощные инструменты и не более. Надо уметь выбирать нужный исходя из времени разработки с его помощью при приемлемом результате. Многие мощные технологии страдают медлительностью и перерасходом ресурсов! Для управления апполоном хватало мощностей современного инженерного калькулятора. Если бы его программу писали на java или C# - посмотрим хватило ли бы мощностей.
Так что все инструменты надо использовать по обстоятельствам. Не буду же писать код в 5 инструкций ассемблера писать на скриптовом языке в боевой программе? Кстати замена "ё" на "йо" требует не многим больше
|
|
|
|
|
|
|
|
C нами с 12.01.2007 Репутация: 103
|
|
splav писал(а): |
...P.S. А кто по вашему эти фреймворки пишет? И на чем они написаны?...
|
Встряну в разговор.... .NET на C++ написан, а не на ассемблере.
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
deema, а половина библиотек VS C++ если глянуть - чистый ассемблер.
|
|
|
|
|
|
|
|
C нами с 12.01.2007 Репутация: 103
|
|
splav, библиотеки да. Да и то я думаю только потому, что все эти библиотеки в большинстве своем писались довольно давно.
|
|
|
|
|
|
|
|
Возраст: 34 C нами с 30.04.2006 Репутация: 77.5
|
|
splav писал(а): |
deema, а половина библиотек VS C++ если глянуть - чистый ассемблер.
|
Не аргумент. Библиотеки и компиляторы всех языков так или иначе ссылаются на асм.
|
_____________________________ Дайте в руки мне баян, я порву его совсем.
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
inkognit, pascal написан на pascal
Даже если так - значит без ассемблера не бывает программ.
|
|
|
|
|
|
|
|
|