и, кстати, перед изучением ассемблера я бы крайне рекомендовал освоить С. не плюсы, а именно С. без понимания, что такое сишный массив, сишные строки и указатели, особенно указатели, в ассемблер лучше даже не пытаться углубляться - голова будет сильно пухнуть
Начинать программировать с процедерных языков (такими являются С и ASM) - ошибка. Трудно себя заставить мыслить и программировать в объектах, если уже научился мыслить и программировать в процедурах.
во-первых, человек ХОЧЕТ изучать асм. это его право. я порекомендовал изучить С перед изучением асма. я не рекомендовал начинать учить асм. где твоя логика, а? во-вторых, заставить себя понять ООП, может, и трудно, а понять легко. в-третьих, если сосредоточиться на изучении парадигмы ООП, то потом может быть сложнее развивать навык алгоритмизации. процедурные языки хороши тем, что заставляют думать не о том, как провести декомпозицию задачи, а о том, как правильно алгоритмизовать её. да, это более сложный и более длинный путь, но знания получатся более комплексными и полными. например, профессионалы с мировым именем рекомендуют написать свой vector перед тем, как использовать оный из STL для того, чтобы лучше понимать, как он работает. а для того, чтобы написать свой vector надо понять, что такое двусвязный список. различные приложения, критичные к производительности (в т.ч. все игры), требуют от разработчика хотя бы базовых познаний, где надо использовать красно-чёрное дерево, к примеру, а где линейный список.
Masterov писал(а):
С++ для начального программирования не годится, поскольку содержит в себе обе парадигмы: процедурную и ООП. На С++ можно писать в процедурах и думать, что пишешь - в объектах. И кроме того - С++ весьма сложен. Все эти сложности накопились в результате того, что С++ родился из Си, и унаследовал от него процедурную технологию и прочие заморочки, которые в Си накопились за десятилетия развития этого языка.
именно поэтому с++ позволяет начать с алгоритмических задач. бинарное дерево - это, прежде всего, не кучка объектов, а алгоритмы поиска, добавления и удаления элементов. как будет реализован каждый лист дерева - дело десятое. да, это на уровень ниже, чем ООП, но профессионалу это тоже обязательно надо знать.
Masterov писал(а):
Если человек планирует обучаться программировать до уровня профессионала, то следует начинать с Java. Причём - с первой Java. Она компактна, с исходниками библиотек (по которым можно учиться программировать) и вней есть всё самое главное. А Java Вторая - монстр, который только запутает. Java - потомок С++, который унаследовал от С++ только объектную часть. На Java нельзя писать в процедурах. Java такой возможности просто не даёт. В Java нет указателей и процедур выделения памяти. Выделение, очистку от мусора и дефрагментацию памяти Java выполняет самостоятельно, и делает она это хорошо. В Java есть механизм синхронизации параллельных процессов (контролируемый на уровне компиляции), что позволяет программировать на Java кластеры и многопроцессорные машины. И (в то же время) Java создавался для программирования встроенных систем с чудовищьно малыми ресурсами. Java работает в мобильниках(!) и даже - в кредитных картах и наручных часах.
Совет "начинать обучение профессиональному программированию" с Си или с С++ - плохой совет.
по твоей методике получится кодер, программист-ремесленник. большинство индусов - как раз такие. большинство израильских программистов - тоже. это инженерный подход к решению задач. и да, этого более чем достаточно в случае, если человек и не планирует стать профессионалом высокого уровня. и не надо никакой java1, надо качать последний jdk с сайта сана, купить хороший учебник и начать покорять землю с классического hello world.
в россии сильна именно школа программистов-математиков, которые сильны в алгоритмах. поэтому, господа, если вы хотите стать профессионалом, математиком, а не ремесленником-инженером, то начинайте с кнута. ооп - это просто.
А Кнут хорошо когда надо углубиться в тему. Но он кстати до сих пор не дописал свой фундаментальный труд, сейчас еще выходит 4 том (частями), а у него еще запланированы несколько томов. Будем надеяться, что до конца своей жизни он все таки его закончит.
Мне кстати не нравится что у него реализации алгоритмов сделаны на им придуманном ассемблере, низкоуровневый язык слишком многословен, программы длинные. Мне больше нравится подход авторов приведенной мной книги, там простой псевдокод.
ps а так во всем согласен, путь (быдло)кодера простой, но хорошим программистом так не станешь.
по твоей методике получится кодер, программист-ремесленник. большинство индусов - как раз такие. большинство израильских программистов - тоже.
Нуда-нуда... Они все дураки, а ты - умный.
Между прочим, их учат программировать профессионалы. А кто тебя учил?
Цитата:
во-вторых, заставить себя понять ООП, может, и трудно, а понять легко.
Один знаменитый писатель (который почти всю жизнь курил трубку) заявил: "Бросить курить, это - пара пустяков: лично я это делал много-много раз!"
Тебе только кажется, что ты понял ООП. Если ты пользуешь указатели в С++, то - ты точно - ничегошеньки не понял.
Цитата:
ооп - это просто
Всё просто, когда понял, или - думаешь, что - понял.
Цитата:
если сосредоточиться на изучении парадигмы ООП, то потом может быть сложнее развивать навык алгоритмизации
Надумано. Нет такой проблемы. (Будто на калькуляторе никто из нас не считал.)
Цитата:
именно поэтому с++ позволяет начать с алгоритмических задач
Да кто тебе сказал, что начинать нужно с алгоритмических задач?
Цитата:
не надо никакой java1, надо качать последний jdk с сайта сана, купить хороший учебник и начать покорять землю
Глупый, дурацкий совет! Исходники Java1 - 200 файлов Исходники Java2 - 10000 файлов - состаришся прежде, чем разберёшься и поймёшь - что в Java главное и что она из себя представляет.
Цитата:
в россии сильна именно школа программистов-математиков
Устаревшая информация. РАН - тусовка престарелых начальствующих снобов, которых обслуживают юноши, косящие от армии. В 2003 году, когда я там работал (17 лет), именно так было. За последние годы всё стало только хуже.
Те выпускники вузов, что приходят первыми во вновь создаваемое НИИ, формируют номенклатуру, и далее, следуещие, кто за ними приходит - шансов реализовать себя (как ученые) не имеют, даже имея семь пядей во лбу и делая научные открытия.
Нашь ведущий московски НИИ математики (название не помню) на одной из конгференций по параллельному программированию хвастал, что они распараллеливают Fortran.
Это и есть уровень школы программистов. Уровень - ниже плинтуса, а самомнение - просто зашкаливает.
Vladson писал(а):
Masterov писал(а):
разницы между программами, написаннымит на С++ и JavaScript практически (как правило) нет
Если речь идёт о простых вещах то да, когда дело касается обработки большого объёма данных то увы разница в быстродействии становится ОГРОМНЕЙШЕЙ
Сложных задач немного, и - пусть их решают проффи.
по твоей методике получится кодер, программист-ремесленник. большинство индусов - как раз такие. большинство израильских программистов - тоже.
Нуда-нуда... Они все дураки, а ты - умный.
Между прочим, их учат программировать профессионалы. А кто тебя учил?
а я где-то сказал, что они дураки? я сказал, что они - ремесленники. разницу видишь?
Masterov писал(а):
Цитата:
во-вторых, заставить себя понять ООП, может, и трудно, а понять легко.
Один знаменитый писатель (который почти всю жизнь курил трубку) заявил: "Бросить курить, это - пара пустяков: лично я это делал много-много раз!"
Тебе только кажется, что ты понял ООП. Если ты пользуешь указатели в С++, то - ты точно - ничегошеньки не понял.
c++ без указателей? а полиморфизм, интересно, как работать будет? похоже, ты не знаешь либо что такое полиморфизм, либо с++.
Masterov писал(а):
Цитата:
если сосредоточиться на изучении парадигмы ООП, то потом может быть сложнее развивать навык алгоритмизации
Надумано. Нет такой проблемы. (Будто на калькуляторе никто из нас не считал.)
Цитата:
именно поэтому с++ позволяет начать с алгоритмических задач
Да кто тебе сказал, что начинать нужно с алгоритмических задач?
сначала надо понять, что делать - это алгоритмизация. потом как делать - это выбор ООП, процедурный язык или ещё чего. с опытом применения ООП на маленьких примерах сложно будет взяться за большую задачу. будет, скажем, ясно, что "дебетовый счёт" и "кредитный счёт" можно сделать классами, унаследованными от базового "счёт". а что с ними делать, чтобы провести транзакцию - не понятно. надуманный пример, но в качестве иллюстрации сойдёт.
Masterov писал(а):
Цитата:
не надо никакой java1, надо качать последний jdk с сайта сана, купить хороший учебник и начать покорять землю
Глупый, дурацкий совет! Исходники Java1 - 200 файлов Исходники Java2 - 10000 файлов - удавишься, прежде чем разберёшься и поймёшь - что в Java главное и что она из себя представляет.
а исходники то нафига изучать, раз уж начал с ООП? всё равно, что начать изучение линукса с исходников ядра. если пошёл по этому пути - то надо купить книжку хорошую и пытаться разобраться по ней, что такое ООП и с чем его едят, ну и как на жаве свои классы реализовывать. как может помочь знание внутренней структуры java.io.FilterOutputStream.PrintStream в понимании
Код:
class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); // Display the string. } }
?
Добавлено спустя 57 минут 15 секунд:
Masterov писал(а):
Устаревшая информация. РАН - тусовка престарелых начальствующих снобов, которых обслуживают юноши, косящие от армии. В 2003 году, когда я там работал (17 лет), именно так было. За последние годы всё стало только хуже.
Те выпускники вузов, что приходят первыми во вновь создаваемое НИИ, формируют номенклатуру, и далее, следуещие, кто за ними приходит - шансов реализовать себя (как ученые) не имеют, даже имея семь пядей во лбу и делая научные открытия.
Нашь ведущий московски НИИ математики (название не помню) на одной из конгференций по параллельному программированию хвастал, что они распараллеливают Fortran.
Это и есть уровень школы программистов. Уровень - ниже плинтуса, а самомнение - просто зашкаливает.
причём тут РАН и НИИ? я про программистов. у нас процент тех, кто действительно профессионал, а не ремесленник, выше, чем в индии или в израиле. это не какая-то абстрактная статистика, я это вижу своими глазами.
Masterov писал(а):
Vladson писал(а):
Masterov писал(а):
разницы между программами, написаннымит на С++ и JavaScript практически (как правило) нет
Если речь идёт о простых вещах то да, когда дело касается обработки большого объёма данных то увы разница в быстродействии становится ОГРОМНЕЙШЕЙ
Сложных задач немного, и - пусть их решают проффи.
вопрос, опять же, в том, чего хочет достигнуть человек, который хочет начать учиться программировать.
c++ без указателей? а полиморфизм, интересно, как работать будет? похоже, ты не знаешь либо что такое полиморфизм, либо с++
Тяжелый случай... Многому тебе ещё предстоит научиться, юноша. А ещё хвастал - в России школа программистов...
В Java нелзя получить указательна на чало массива данных, а потом "гулять по нему" - взад-вперёд, как это позволено в Си и С++.
Тот факт, что С++ предоставляет возможность напрямую обращаться к памяти, становится причиной ненадёжности кода, написанного на С++. Нет никакой гарантии, что указатель в программе (на С++ написаннной) не залезит за пределы массива и не затрёт кусок кода, подвесив комп.
Что касается полиморфизма, то там на уровне компилятора идут контроль за указателями. Программист (в Сишном понимании) не имеет доступа к указателям.
ПРИМЕР: в Си есть функций qsort(). У неё в параметрах пара указателей. Однин на массив, который нужно отсортировать, другой - на функцию, которая сравнивает между собой пару элементов в массиве. Если перепутать местами эти указатели, то (в лучшем случае) программулина зависнет.
В Java подобное в принципе невозможно.
Цитата:
а исходники то нафига изучать, раз уж начал с ООП?
Программированию нужно учиться у профессионалов, а не болтунов, что только треплютя и пальцы загибают.
Библиотеки Java писали суперпроффи. У них учится нужно.
Цитата:
причём тут РАН и НИИ? я про программистов. у нас процент тех, кто действительно профессионал, а не ремесленник, выше, чем в индии или в израиле. это не какая-то абстрактная статистика, я это вижу своими глазами.
Не верю. Оснований для подобного в России просто нет. А после дефолта 1998 года мамонты программирования, что десятки лет за клавиатурой провели, вымерли как класс. Молодёже учиться не у кого.
Цитата:
вопрос, опять же, в том, чего хочет достигнуть человек, который хочет начать учиться программировать.
Так я и привёл два варианта обучения: 1. Человек хочет стать программистом. 2. Человек хочет подняться немного выше, чем просто польсователь ПК.
ПРИМЕР: в Си есть функций qsort(). У неё в параметрах пара указателей. Однин на массив, который нужно отсортировать, другой - на функцию, которая сравнивает между собой пару элементов в массиве. Если перепутать местами эти указатели, то (в лучшем случае) программулина зависнет.
c++ без указателей? а полиморфизм, интересно, как работать будет? похоже, ты не знаешь либо что такое полиморфизм, либо с++
Тяжелый случай... Многому тебе ещё предстоит научиться, юноша. А ещё хвастал - в России школа программистов...
В Java нелзя получить указательна на чало массива данных, а потом "гулять по нему" - взад-вперёд, как это позволено в Си и С++.
Тот факт, что С++ предоставляет возможность напрямую обращаться к памяти, становится причиной ненадёжности кода, написанного на С++. Нет никакой гарантии, что указатель в программе (на С++ написаннной) не залезит за пределы массива и не затрёт кусок кода, подвесив комп.
Что касается полиморфизма, то там на уровне компилятора идут контроль за указателями. Программист (в Сишном понимании) не имеет доступа к указателям.
ПРИМЕР: в Си есть функций qsort(). У неё в параметрах пара указателей. Однин на массив, который нужно отсортировать, другой - на функцию, которая сравнивает между собой пару элементов в массиве. Если перепутать местами эти указатели, то (в лучшем случае) программулина зависнет.
В Java подобное в принципе невозможно.
причём тут жава? причём тут С? причём тут массивы? ты читал, что я написал? если ты про игру с указателями - так и пиши тогда. а, скажем, бинарное дерево то же на С++ без указателей сделать не получится.
Masterov писал(а):
Цитата:
а исходники то нафига изучать, раз уж начал с ООП?
Программированию нужно учиться у профессионалов, а не болтунов, что только треплютя и пальцы загибают.
Библиотеки Java писали суперпроффи. У них учится нужно.
ага, а учиться водить надо перебирая двигатель машины
Masterov писал(а):
Цитата:
причём тут РАН и НИИ? я про программистов. у нас процент тех, кто действительно профессионал, а не ремесленник, выше, чем в индии или в израиле. это не какая-то абстрактная статистика, я это вижу своими глазами.
Не верю. Оснований для подобного в России просто нет. А после дефолта 1998 года мамонты программирования, что десятки лет за клавиатурой провели, вымерли как класс. Молодёже учиться не у кого.
человек не знает жавы вообще. совсем. он даже английский с трудом понимает, например. а ты предлагаешь ему библиотеки читать. он всё равно ничего не поймёт без основ.
человек не знает жавы вообще. совсем. он даже английский с трудом понимает, например. а ты предлагаешь ему библиотеки читать. он всё равно ничего не поймёт без основ.
Основы в книжках описаны (лучшая книга: 1001 совет по Java), а незнанием английского наше поколение могло хвастать. Вам не знать английский (когда столько mp3-самоучителей) - стыдно. Не может современный молодой человек английского не знать и неуметь пользовать ПК, хотя бы на уровне пользователя.
тем не менее многим отбивают желание учить ещё в школе. айтишники худо-бедно, но технический все знают в силу специфики работы. да и уровень пользователя уровню пользователя рознь. худо-бедно многие могут...
тем не менее многим отбивают желание учить ещё в школе. айтишники худо-бедно, но технический все знают в силу специфики работы. да и уровень пользователя уровню пользователя рознь. худо-бедно многие могут...
Согласен. Сам через это прошел. (В школе был немецкий, в университете - английский, на выходе - нуль: сказать ничего не могу, на слух не воспринимаю, но за 30 лет документацию худо-бедно читать научился.)
Человек с нулевыми навыками английского, оказавшийся в англоязычной стране, через пару месяцев уже начинает общаться. У нас лет десять-пятнадцать английскосму учат, а результат каков?: на слух не воспринимают, мысль свою на английском сформулировать не может - какое тут может быть общение на английском?
Преподавателей английского нужно пустить на самокупаемость. Пусть им платят студенты сами. Тогда преподаватели будут о результате думать, к нему стремиться. А бесплатно - хорошо ешё никогда не было. (Из меня эти англичане и немцы просто все жилы вытатянули.)
Два глухих встретились: -- Ты в баню? -- Данет, я - в баню! -- Ааа... Я думал ты в баню.
mccornik - читать умеешь? Или ты - "писатель"?
kidoz писал(а):
mccornik писал(а):
Народ, так всеже, что легче в изучение?
ruby - отличная документация, множество уже готовых компонентов, кроссплатформенная реализация интерпретатора языка.
Это правда, что: не бывает глупых вопросов. Бывают глупыми ответы.
kidoz, ты специально тут, чтобы давать глупые ответы и глупые советы?
Твой раби - где работает? В мобильнике? В браузере стандартного виндусового клиента? Может: на стадартном нынче хостинге? Человек, который на раби напишет программу - сможет её продемонстрировать работодателю?
ToSHiC писал(а):
mccornik писал(а):
Народ, так всеже, что легче в изучение?
цель то какая?
А вот это правильный вопрос. Хотя: вопросом на вопрос... вроде как... Но не в данном случае.
mccornik, ты чего хочешь: стать профессиональным программистом или - научиться пользоваться компьютером немного выше, чем обычный пользователь? (Для обоих этих вариантов тут дан рецепт.)
Последний раз редактировалось Masterov 27.03.2010 13:41, всего редактировалось 1 раз.
Человек, который на раби напишет программу - сможет её продемонстрировать работодателю?
Может ему надо будет запустить её?
Раби - интерпретируемый язык. Чтоб его запустить (прежде) нужно интерпретатор этого языка установить на комп работодателя. Он тебе это позволит?
Допустим ты убедил работодателя установить на его комп интерпретатор и смог продемонстрировать. Но работодатель сразу спросит: чтоб твоя программулина работала у его (работодателя) партнёров, клиентов и т.п. - нужно будет убедить и их, чтоб и они установили интерпретатор раби. Они согласятся? Уверен? Им этот геморой нужен, в то время как HTA работает везде, на всех виндусовых компьютерах.
Всё, что не работает на стандартном виндусовом клиенте и/или в мобильнике - хлам и мусор, место которому в мусорной корзине.
kidoz, ты специально тут, чтобы давать глупые ответы и глупые советы?
Твой раби - где работает? В мобильнике? В браузере стандартного виндусового клиента? Может: на стадартном нынче хостинге? Человек, который на раби напишет программу - сможет её продемонстрировать работодателю.
У вас крайне примитивное представление о ruby. Для создания самодостаточной программы можно воспользоваться http://exerb.sourceforge.jp/index.en.html под windows. Для web CGI еще никто не отменял. jruby - ruby будет там, где будет java
Чьи еще советы и ответы глупы, я бы поспорил.
P.S. Для web еще неплох ruby on rails, свои работы на нем крайне удобно демонстрировать с помощью Ruby on Rails Portable на USB.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения