Я бы посоветовал Г. Шилдта, "Руководство для начинающих". Сам по нему изучал (у меня 4-е издание), хоть и не использую Java в повседневности. Не утверждаю, что это самый правильный выбор, но мне книга понравилась.
У него же есть отдельная книга "Swing. Руководство для начинающих" и "Java SE 6. Полный справочник".
Разумеется, ни о каком J2EE речи там не идёт, только в последней книге есть небольшая глава по JavaBeans и сервлетам.
Кстати, мне интересно, почему не рекомендуют изучать Java в качестве первого языка ? Хоть я и не профессиональный кодер, но считаю, что пусть человек приобщается к практическим вещам. Тем не мене, плюсую Python. Интересно услышать мнения.
Если учиться программированию, то надо хорошо понимать и знать, как работает язык. В Java же многое делается компилятором и JVM, а если ещё использовать IDE, то вообще почти всё автоматом (генерация классов, методов и т.п.). Опять же, в Java много возможностей, которые при обучении программированию не нужны (те же классы, интерфейсы, наборы данных). Я под изучением программирования понимаю изучение циклов, условных операторов, структуризацию программ, и алгоритмы со структурами данных: сортировки, деревья, хэши, списки...
А вообще зачем ему программирование? Я бы если вернуться на 20 лет назад, поступил бы учиться на зубного врача, а не на инженера. Ибо у них стабильный, высокий и непрекращающийся доход, а на инженеров смотрят как на скот для решения задач. Как-то так
>Если учиться программированию, то надо хорошо понимать и знать, как работает язык.
а понимать как что работает в java не нужно что ли? >В Java же многое делается компилятором и JVM, а если ещё использовать IDE, то вообще почти всё автоматом (генерация классов, методов и т.п.).
и что в этом плохого? >Я под изучением программирования понимаю изучение циклов, условных операторов, структуризацию программ, и алгоритмы со структурами данных: сортировки, деревья, хэши, списки...
На джаве простая программа содержит много лишних подробностей. Имхо, это помешает изучению. На паскале например простая программа пишется просто,
begin
Write('Hello');
end.
А на джаве много мелочей, которые придётся оставлять на потом, но без них программа не скомпилируется. В итоге человеку придётся просто запоминать все магические манипуляции, которые надо сделать чтобы заработала простейшая программа (потому что человеку, не знающему что такое программирование, не имеет смысла объяснять про модули, неймспейсы, классы, статические методы, области видимости и прочее. И вообще, не для этого она делалась. Паскаль, схема - намного лучше в этом плане.
Да какая жаба в 9-м классе? Народ, опомнитесь! Ребенку нужно налегать на школьные предметы, до ынтырпрайз-программинга ему ещё ой как далеко. Максимум букварь по питону, для особо одаренных - htdp и sicp. И то я сильно сомневаюсь, что это всё надо в столь юном возрасте.
Я вот дико жалею, что в 9-м классе просто учился, а не начинал заранее думать, с чем именно я хотел бы работать. В таком возрасте голова должна ещё хорошо варить, и если будет желание, то справится, ИМХО, и со школьной программой.
//Зарываться в кодинг с головой не стОит, но если душа лежит к этому - можно только порадоваться.
Хуже многим. Что бы обучить просто пузырьку нужно расскзать что такое пакеты, классы, методы, статические методы, строки, модификаторы доступа сверх того что нужно на паскале. Нафига это всё при начале обучения, а?
>а понимать как что работает в java не нужно что ли?
Понять, как это всё работает в Java сложнее, чем в том же паскале/С.
>и что в этом плохого?
Плохо то, что код пишет не обучающийся, а компьютер. Это хорошо, когда ты написал сотни каркасов классов, но плохо, когда пишешь второй. Банально синтаксис правильный не запомнишь, т.к. тебе всегда будет подсказывать среда разработки.
+ есть принятый для Java стиль программирование, по типу все поля закрыты, для доступа геттеры/сеттеры, наследование, интерфейсы и т.п., что отнюдь не облегчит изучение ПРОГРАММИРОВАНИЯ, а не самой Java.
+ как писали ниже, зачем начинающему изучать пакеты, уровни доступа и т.п.? Это хорошо уже потом, когда человек спокойно может написать сортировку.
А если вспомнить про работу с файлами в Java? Одна обработка исключений чего стоит.
>Понять, как это всё работает в Java сложнее, чем в том же паскале/С.
понимать ВСЁ как правило не нужно, только если будут конкретные проблемы в конкретном месте, а общие вещи не так сложны. >Банально синтаксис правильный не запомнишь, т.к. тебе всегда будет подсказывать среда разработки.
public static void main(String[] args) что ли? В реальной жизни классы руками всё равно никто не пишет. >+ есть принятый для Java стиль программирование, по типу все поля закрыты, для доступа геттеры/сеттеры, наследование, интерфейсы и т.п., что отнюдь не облегчит изучение ПРОГРАММИРОВАНИЯ, а не самой Java.
не хочешь - не пиши, но если сильно хочется - в пару кликов IDE за тебя их создаст >+ как писали ниже, зачем начинающему изучать пакеты, уровни доступа и т.п.? Это хорошо уже потом, когда человек спокойно может написать сортировку.
а кто заставлет ими пользоваться-то? дефолтный пакет+паблик поля и нет вопросов. >А если вспомнить про работу с файлами в Java? Одна обработка исключений чего стоит.
И чему тогда научится человек? Исключения не обрабатывать, юзать дефолтный пакет, а все поля и классы генерить через IDE? Ты так обучался программированию? Я нет, и изложил, как, на мой взгляд, правильнее. А правильнее использовать язык, предназначенный для изучения программирования, или хотя бы не шибко умный. Java в этом плане явный оверхед.
>Что бы обучить просто пузырьку нужно расскзать что такое пакеты, классы, методы, статические методы, строки, модификаторы доступа сверх того что нужно на паскале.
пакеты - не нужно
статические методы - не нужно
строки - желательно как раз сразу объяснять, что такое строки
модификаторы доступа - не нужно
>вообще все сложности java для обучение легко решаются groovy :)
+10^100000 только ни одной книги на русском по Groovy нет, и потом, любая книга по Groovy предполагает что человек знает уже программирование в целом и програнье на жабе в частности.
> В реальной жизни классы руками всё равно никто не пишет. > в пару кликов IDE за тебя их создаст
> дефолтный пакет+паблик поля
> исключения можно и не обрабатывать
У тебя точно жаба головного мозга. Примерно так, как ты описываешь, студиозов учат "программировать" на дельфи. И то, даже наши вузовские умники не догадались давать эту хрень в качестве первого языка.
Сколько можно пиарить это поделие? Умные дядьки из МТИ какбэ намекают на правильные языки и литературу для обучения. Жабофилы же всё лисапед с квадратными колесами норовят подсунуть.
>Х.М. Дейтл, П.Дж.Дейтл Как программировать на Java ( 3 тома )
По-моему, это замечательное издание особенно для новичков. Здесь всё достаточно понятно описано, много примеров
thats what im talkin about. только там не 3 тома а один, и на русском есть 3-е издание или 2-е, а уже актуально 7-е
знание java там требуется минимальное, я бы даже сказал, что чем меньше, тем лучше, ибо динамическая типизация и прочие плюшки поначалу здорово ломают могз.
я бы тоже предложил начать с питона. Заставит грамотно код писать + не особо сложный язык. Да и потом перейти на джаву будет не сильно трудно (подход в программировании одинаковый у обоих)