Научиться программировать
May. 9th, 2012 04:21 pm![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Добрый день.
Хочу научиться программировать, с нуля, язык - Java.
Посоветуйте пожалуйста литературу, именно нулевого уровня.
Хочу научиться программировать, с нуля, язык - Java.
Посоветуйте пожалуйста литературу, именно нулевого уровня.
no subject
Date: 2012-05-09 12:47 pm (UTC)no subject
Date: 2012-05-09 12:49 pm (UTC)no subject
Date: 2012-05-09 01:00 pm (UTC)no subject
Date: 2012-05-09 12:50 pm (UTC)Вроде бы современный язык, мощный, эффективный, развивающийся.
Ну или посоветуйте, какой тогда язык выбрать? Хочу заняться разработкой игр. Всерьёз, но в качестве хобби)
no subject
Date: 2012-05-09 01:11 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 01:56 pm (UTC)1. Паскаль, в частности, среды разработки делфи и лазарус (у них на сайте отличный учебник для начинающих). Язык прост, имеет отличную математическую часть + кучу дополнений (в том числе и для разработки игр. Огромный плюс в том, что его реально выучить, до того как он надоест. Многие любители так на нем и остаються и не идут дальше.
Ремарка на полях. Лазарус конвертирует код на паскале в код на Си, а потом уже компилирует, поэтому сравнивая код наших предидущих програм, будет легко перейти к шагу 2.
2. Си, чистый и не замутненный. Папа С++, джавы, обджектив-С, Си-джи, и многих-многих других.
2.1 Далее можно изучить дополнения для объектноориентированного программирования для Си, про них мало кто знает, еще меньше кто использует, но они добавляют ко всем плюсам Си возможность объектноориентированного программирования, после чего можно почувствовать себя богом и с презрением смотреть на проблемы Си-плюс-плюсников и джавишников и дальше никуда не идти.
3. Си++/Джава/обджектив-С(язык эпла). Если все еще есть желание их изучать 8-)
З.Ы. С самого начала и до самого конца потихоньку изучаем язык ассемблера, для понимания сути происходящего и ассемблерных вставок в код.
no subject
Date: 2012-05-09 12:48 pm (UTC)Вам сперва надо научиться открывать, этот сайт.
Потом, в строчке запроса ввести "как программировать под java"
Когда вы с этим справитесь, нажать Enter
Потом уже будет проще, самый сложный этап позади.
no subject
Date: 2012-05-09 12:51 pm (UTC)Мне не бездушное гугление нужно, а совет людей с личным опытом.
Начинать читать все подряд учебники - не слишком эффективно.
no subject
Date: 2012-05-09 04:23 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 01:29 pm (UTC)(no subject)
From:no subject
Date: 2012-05-09 04:21 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 04:30 pm (UTC)no subject
Date: 2012-05-09 12:49 pm (UTC)no subject
Date: 2012-05-09 12:54 pm (UTC)Видел такой учебник по C#, где сначала объяснялись всякие основы вроде типов данных, что такой циклы и прочая лабуда, при этом плавно закреплялся синтаксис языка на простеньких примерах. От "привет, мир" до клиент-серверных приложений там потихоньку всё расписывалось.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 12:52 pm (UTC)no subject
Date: 2012-05-09 12:56 pm (UTC)Нельзя сразу учиться на целевом?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 01:59 pm (UTC)Вы неправильно себе представляете, что такое программирование. "Программировать на жабе" учатся только индусы и приравненные к ним писатели одноименного кода. Все остальные сначала учатся программировать - это долго, не очень интересно и примерно половине людей на земле недоступно (независимо от интеллекта - кроме него, нужны ещё вывихнутые в правильную сторону мозги). Потом они за месяц-два выучивают язык и фреймворк, которые нужны для текущего проекта.
В общем, идите читать "Искусство программирования" Кнута, а там сами поймёте, что нужно дальше.
no subject
Date: 2012-05-09 02:06 pm (UTC)Однако, для меня всегда оставался открытым вопрос, должен ли программист быть математиком?..
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 02:25 pm (UTC)У меня прямо под боком есть один "программист 1С". Его, так сказать, становление я наблюдал с самого первого дня. Тоже, конечно, ткнул его носом в Кнута, он вроде даже полистал, потом сказал "скучно и времени нет" и засел за руководство по адинэсу. И у него через год даже начало вроде что-то получаться - лепил какие-то формочки, что-то там поправлял в штатных конфигурациях.
Потом один отчёт ему вдруг не дался: он его и так, и эдак, а на печати вместо правильных цифр и строчек - какая-то совершенно невтемная лабуда. Две недели он с ним бился. Мне его жалко стало, я, хоть и вообще с этим адинэсом знаком на уровне "запускать двойным кликом по жёлтому значку" - подошёл, глянул в код. Ну конечно, там вместо отдачи параметра в SQL-запрос (или как оно по-ихнему, не знаю) какой-то бешеный трёхуровневый цикл с тремя страницами лапша-кода внутри, который делает вообще непонятно что. Я говорю, ты вообще что имел в виду, когда это писал? А он: это с этого форума скопипастил, то с того форума, а беэ этого оно синтаксическую ошибку выдаёт...
В общем, я десять минут гуглил документацию по адинэсу и ещё пять минут отлаживал, после чего оно заработало. Причём генерация отчёта стала мгновенной - вместо бывших двадцати секунд с постановкой раком терминального сервера.
Понял, говорю, зачем человеку Кнут нужен? Говорит, понял...
Через полгода он опять накропал за три недели три страницы лапша-кода, чтобы разбить строку с датой на день-месяц-год. Ну, не слышал человек про регэкспы, некогда ему время тратить на всякую ерунду - "учиться программировать на адинэс" надо...
Причём парень-то умный, вот что обидно. Поумней меня, во всяком случае. Просто почему-то решил, что лучше специалистов знает, что важно, а что ерунда.
no subject
Date: 2012-05-09 02:57 pm (UTC)Спрошу ещё раз, на ваш взгляд Кнута достаточно для того, чтобы научиться программированию?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-09 08:07 pm (UTC)no subject
Date: 2012-05-10 06:15 am (UTC)После этого - стандарт Java и документацию на нужные API.
no subject
Date: 2012-05-11 03:39 pm (UTC)1. Возьмите любое практическое пособие по любому языку (хоть Кёрнигана+Ричи, хоть Дейтла, хоть Вирта) и пройдите по нему несколько глав (с начала и до написания пары собственных функций). Обязательно пишите и запускайте все примеры из выбранной книги. Этот этап обучения нужет только для того, чтобы Вы ощутили программирование "руками". Это облегчит работу над следующим этапом.
2. Предложенная ув.
3. Берёте уже частично пройденное или другое пособие по языку. Проходите его полностью, при необходимости заглядывая в SICP (например, если у Вас возникнет вопрос "ЧТОЭТОТАКОЕ!!?????"). Не перепрыгивайте то, что Вы прошли на этапе 1, как бы Вам ни хотелось этого. Пройдите всё сначала, потому что теперь Вы будете лучше понимать, что Вы пишете.
4. Если Вы не владеете английским языком или владеете слабо - изучайте и укрепляйте его знание. Это неоценимо, когда Вы сталкиваетесь с документацией или просто ищете решение в сети типовой задачи.
5. Выбирайте технологии и фреймворки, с которыми будете работать (можно найти их упоминание в описаниях игр, на форумах разработчиков, в статьях игроделов). Не начинайте писать игры без применения готовых движков. Изобретать велосипеды имеет смысл тем, кто досконально разбирается в велосипедах.
Касательно советов, которые давали Вам выше.
Не начинайте изучать "абстрактное программирование", не познакомившись хоть немного с каким-нибудь языком. Иначе Вы получите массу информации, висящей в воздухе, не прикреплённой ни к какому практическому опыту. Это затруднит и замедлит обучение.
Не изучайте ассемблер. Вы ведь собрались писать игры для мобильных устройств, а не драйвера и операционные системы? Знание любого ассемблера лишь помешает Вам работать в этой области, а попытка использовать - тем более.
Не упирайтесь только в учебник по языку. Он даст Вам правила синтаксиса, но не научит решению задач, стоящих перед программистом. Читайте теорию алгоритмов, пособия по дискретной математике и векторной алгебре, описание подходов к программированию.
no subject
Date: 2012-05-11 10:30 pm (UTC)no subject
Date: 2012-05-11 10:30 pm (UTC)Вы очень помогли.