Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Реально ли выучить Java почти не зная C++ ? |
Автор: ПапаМишка 17.4.2006, 09:40 |
Вот вопрос встал, я знаю только основы С++, то есть самое простое, даже не доходя до ООП, то есть циклы разные, массивы и ещё немного. Реально ли сразу выучить Java, или есть смысл сначала освоить C++ ? Подскажите, а то я опять на распутьи ![]() |
Автор: batigoal 17.4.2006, 09:45 |
Да. Во многих вузах Java выбирают в качестве языка обучения. |
Автор: Ch0bits 17.4.2006, 09:59 |
И С++ и Java воспитываю хороший стиль программирования, это хорошие языки для начинания. Да, но стать профессионалом в какой-либо области можно лишь упорным трудом и опытом. Плюсы Java перед С++ 1. Намного более лёгкий и понятный язык, во многом поддерживает принцип KISS, в тоже время очень мощный и элегантный. 2. Позволяет оторваться от аппаратной зависимоти. 3. Полность объектно-ориентирован, минимальная программа уже класс. 4. Свободная и популярная технология. Используется даже как встроенный язык (Oracle, SAP, ...) 5. Полная кроссплатформенность (у С++ частичная). 6. Богатый фреймворк позволяет не думать над рутиной, а непосредственно реализовать мысль программиста 7. Автоматическое управление памятью. Не существуют в принципе заморочеки с указателями и утечки памяти. 8. Множество свободных IDE (лучше чем для С++) 9. Включает библиотеки для работы со всеми современными технологиями. 10. Интернет ориентирована (JSP, WebServices, Applets) 11. Поддерживает рефлексию и рефакторинг. (не знаю как этим дела у современного С++) так сразу всё не припомнишь... ![]() Я сам многому обязан Java, она научила меня настоящему ООП и хорошему стилю. Java мой второй любимый язык после C#. |
Автор: Ch0bits 17.4.2006, 10:18 |
Неужели это я? ![]() Нет, я не буду спорить, а останусь при своём мнении. Не надо тут устраивать религиозные войны. ![]() Ну языки всякие есть, и Nemerle и BrainFuck. ![]() |
Автор: ПапаМишка 17.4.2006, 10:19 |
>> Но в целом согласен - Java с моей точки зрения лучший вариант в смысле легкости обучения и полезности полученных знаний. C# можно рассматривать как альтернативу при особой любви к M$. Я знаю только одного человека, которому C# нравится больше Java, остальные плюются. Впрочем, это больше "заслуга" окружения, а не языка. С моей точки зрения MSDN - очень неудобная штука. Значит лучше Java учить, а никак не C# ? ![]() |
Автор: LSD 17.4.2006, 10:23 |
Ты для начала определись с чем ты планируешь работать. Если хочешь писать большие корпоративные системы, то лучше Java. Если desktop приложения под Windows то лучше C#. Если решишь в DBA податься, то SQL + PL/SQL or T-SQL or ... |
Автор: powerOn 17.4.2006, 10:32 | ||
Если хочешь выучить Java, так учи Java. Её и без C++ можно познать. Если и то и другое нужно, то начни C++, поскольку с C++ легче перейти на Java, чем с Java на С++. Лично я начинал с С++, но ради С++. К java перешел только через пару лет, осознав что лучше хорошо знать платформу Java, чем мучаться с переносимостью программ. Да и бесплатная она, что радует. Но С++ без условно очень полезно знать, даже очень очень полезно. Вобще учиться полезно всему. ![]() Добавлено @ 10:36 Если уж о .NET речь зашла, тогда лучше не о С# думать как об альтернативе Java, а о J# |
Автор: Ch0bits 17.4.2006, 10:42 |
Этот гадкий утёнок был выпущен только с маркетинговой целью заманить на .NET больше Java программистов. И для более лёгкого переноса проектов с Java на .NET, так как .NET был создан по образу и подобию Java. |
Автор: garm 17.4.2006, 16:19 | ||
Смысл освоить С++ безусловно есть, в любом случае. Но, как уже было сказано, знание его не является необходимым для освоения Java. Вообще, изучение языка - не такая уж и сложная задача, поэтому советую разобраться и с тем и с другим, и самостоятельно решить, что тебе больше нравится. |
Автор: Tirael 17.4.2006, 18:02 | ||||
На мой взгляд это самые худшие языки для начинающиего. Я пребываю в твердом утверждении, что програмиирование имеет свой предмет, не сводящийся ни к конкретным языкам и системам, ни к методам постоения быстрых алгоритмов. Что требуется от начального языка программирования? Легкость и быстрота в изучении. Ни Java, ни уж тем более С++ не обладают такими свойствами. Полиморфизм, инкапсуляция, наследование - поверьте, не самые лучшие темы для начинающего. А ведь, какой учебник ни возьми, именно с них начинается знакомство с С++ и Java. Недаром ведь в школе используют BASIC или PASCAL. Однако, если у вас уже есть опыть программирования, то в принципе, можно браться за любой язык. Собственно по вопросу:
Наверное вполне реально. Я изучал сначала С++, потом Java. Сегодня я ненавижу С++ лютой смертью, не смотря ни на какие его плюсы. Так что пополняйте ряды Java-девелоперов ![]() А можно привести пример 5-6 таких ВУЗов? |
Автор: batigoal 17.4.2006, 18:42 |
Конкретных примеров не назову - это относится к западным университетам, там я не учился. У нас в институте Java изучалась наравне с С++ (правда, Си - на полгода раньше). Язык разработки программ для остальных дисциплин оставлялся на усмотрение студента (кроме тех случаев, когда это диктовалось самим предметом - например, программирование микроконтроллеров подразумевало ассемблер). Добавлено @ 18:43 Забыл сказать - это ПГУПС (он же ЛИИЖТ). |
Автор: Ch0bits 17.4.2006, 23:51 |
Не забывайте, что в школе не готовят программистов! Там показывают основы, ну вот так программу набираем, а вот так запускаем... А потом такие люди (не все конечно) начинают писать на VB6 и Delphi. ![]() ![]() Я считаю, что человек который захотел стать программистом и имеет голову на плечах должен начинать со сложного и чем сложнее, тем лучше. Зато потом всё будет малиной казаться. Как говориться тяжело в учении - легко в бою. Зы: Мой первый язык был asm x86! ![]() И правильно! Они получают больше, чем паскалёвщики. ![]() |
Автор: FatherFrost 18.4.2006, 07:49 |
Lamer George, у нас щас на кафедре ООП преподают на Java... Я этого не застал (у меня были Delphi, но я от этого был освобожден)... Учился и учусь в РГРТУ (г.Рязань). А по сабжу, учи Java на C#, будет несложно перейти в случае необходимости. |
Автор: powerOn 18.4.2006, 08:09 | ||
НГТУ (Нижегородский Государственный Технический Университет) |
Автор: ПапаМишка 18.4.2006, 10:28 |
Усё, спаиба, убедили!!! Щаз буду рыться и искать книгу какую нить по JBuilder 2005 что ночью поставил ![]() |
Автор: ALKS 18.4.2006, 14:35 |
угу... книгу ищи по Java а не по среде разарботки. JBuilder это плохой выбор потому что не безплатная, не лучшая, и относительно не распосранненная. И я полностью согласен с Tirael и Java и C++ это очень плохой выбор для обучения. Это профессиональные языки для промышленной разработки. Т.е. подразумеваеться чтo с ними работают профессионалы. Oба языка имеют массу совершенно не тривиального синтаксиса и не только связанного с ООП... |
Автор: garm 18.4.2006, 15:29 | ||
Ну вот и замечательно. Удачи тебе в деле освоения новых языков. Так ведь профессионалами не рождаются - ими становятся. А непригодность этих языков для написания тривиального кода для тривиальных программ - что бы усвоить некие базовые понятия - вещь достаточно спорная.
С плюсами - согласен, а вот для Java хотелось бы пример такого синтаксиса. Хотя даже в плюсах на начальном этапе его использование не обязательно. Скажем была такая книжка - С++(П. Франка) - как там написано, так это куда уж проще. Моё мнение - с чего и начинать как не с этих языков? |
Автор: COVD 18.4.2006, 16:19 |
Использование всех изысков языка на любом этапе не обязательно. ![]() |
Автор: garm 18.4.2006, 16:28 |
Тоже правильная мысль. Хотя обычно изыски делаются не просто так, а по делу, то есть использовать их всё таки придётся. |
Автор: COVD 18.4.2006, 16:49 |
Ну, возможно придется изучить, чтобы получить сертификат. А вот использовать в работе, это уж как повезет. (90% пользователей используют только 10% возможностей и наоборот ![]() |
Автор: Tirael 18.4.2006, 17:13 | ||||||
Пожалуйста !!!!
Лично я не сразу понял что код делает. Вот еще один замечательный пример Java кода
Вопрос ? Почему такой код не будет компилироваться ???? |
Автор: Бонифаций 18.4.2006, 17:23 |
цитата из Дейкстры : "Студенты, первоначально ориентированные на Бэйсик - умственно оболванены без надежды на исцеление" |
Автор: garm 18.4.2006, 17:38 | ||||||||||||
Наверное распечатывает все элементы коллекции для коллекции с любым типом? У меня всё ещё 1.4 java стоит, поэтому я с пятой не очень хорошо знаком. Соответственно когда пытаюсь придумать сложный java-синтаксис фичи 1.5 не рассматриваю. Тем не менее признаю, этим уже можно новичков пугать.
Где-то я уже такое видел, причём недавно. Потому что после x+1 мы получим int? Но синтаксис этого примера - тривиален.
Боюсь, что современные языки не настолько богатые, что бы позволить себе работать на десяти процентах. Поэтому, даже если выбросить все редкоиспользуемые выражения, там ещё много останется непростого-нужного. Взять хоть те же шаблоны: можно ли изучить базовые понятия без них? Можно. А можно ли без них успешно работать? Сомневаюсь.
![]() |
Автор: ALKS 18.4.2006, 17:45 |
Не очивидный синтаксис в Java? - да даже такая вещь как исключения обычно осваиваеться с трудом новичками. анонимные внутренние классы - мой любый пример не тривиального синтаксиса в Java. Assertions тоже народ въезжает далеко не сразу. Annotation в Java 5: я никогда не сталкивался с мета данными и честно признаюсь что не въехал в Annotation, понимание пришло когда стал рыться в исходниках JUnut4... а многопоточность? или сириализация с милийшими private методами которые можно перегружать, как вам? |
Автор: garm 18.4.2006, 18:43 | ||
Что ж, возможно всё это действительно вызывает сложностей у начинающих java-программистов. Только вот два вопроса: 1 Обязательно ли на начальном этапе всё это использовать? На мой взляд сколько-нибудь важной вещью являются лишь исключения, всё остальное можно отложить до лучших времён. 2 Поможет ли владение тем же Бэйсиком во всём этом разобраться? |
Автор: ALKS 18.4.2006, 18:58 |
ну... как правильно заметили можно, собственно, огромную программу уместить в одном методе main(). это путь? это программирование? отвечая на вопрос - да. весь синтаксис нужно знать + нужно четко знать и понимать все что стоит за каждым методом класса java.lang.Object и для чего это нужно а это, кстати, огромный пласт. нужно четко ориентироватсья хотябы в основных пакетах стандартной библиотеке ака java.lang.*, java.util.*, java.io.*. это абсолютный минимум чтобы серьезно программировать на Java и это не мало. да знание BASIC поможет. если человек знает BASIC ему не нужно разбираться что такое присваивание (тяжелейшая тема, если вы не знали, один из самых трудных моментов при преподавании программирования детям в школе, дети въезжают с огромным трудом ![]() |
Автор: Stampede 18.4.2006, 18:58 |
Да, или вот тоже простейшая вещь: конструктор копирования vs Cloneable. И не такая уж редкая ситуация, между прочим. Но в целом я больше склонен согласиться с garm. Да, в Java есть свои тонкие моменты. Но это, так сказать, контролируемая сложность: можно учиться по нарастающей. Не всем же сразу приходится писать распределенный load balanser ![]() А ПапаМишка хотел бы дать совет: не надо учить Java по книжкам. Это все равно что заниматься английским по Бонку: скучно, долго и с практически нулевым результатом. Гораздо эффективнее озадачить себя реальным проектом и уже в процессе использовать книжки - где как справочник, где как туториал, а где и как учебник. Если говорить о возможных сферах применения своих пробных сил, то лучше всего, на мой взгляд, написать какую-нибудь полезную консольную утилиту. Наерняка у тебя в компе найдутся вещи, которые ты хотел бы как-то автоматизировать. Просто навскидку: скажем, выдавать сводку по всем обновлениям в файловой системе за истекший отчетный период для последующего резервного копирования. Почему именно утилиту и именно консольную - потому что это будет больше всего в духе изучения C по Кернигану/Ритчи, что есть едва ли не самый эффективный подход: чистый синтаксис, минимум библиотек (коллекции, ввод/вывод) и быстрая отдача. Предупреждаю, если свяжешься с гуем, моментально погрязнешь в непроходимых дебрях Swing'а. Они, конечно, проходимые, но только не для новичка. То же самое с вебом: если никогда с этим не сталкивался, будешь как тот синьор Робинзон с завязанными глазами наступать на каждые грабли. Так что берись за какую-нибудь задачу - и вперед. И можешь рассчитывать на помощь клуба ![]() |
Автор: garm 18.4.2006, 19:47 | ||||||
Путь в тысячу ли начинается с первого шага.(с) Китайская пословица. И зачем сразу писать огромную программу? Можно сначала маленькую. И - да, в методе main. Мне кажется, что бы научится работать с циклами, условиями, примитивными типами main хватит. Ну а потом уже можно и дальше двигаться - другие методы, другие классы, наследование, инкапсуляция, полиморфизм...
Конечно нужно. Только сколько на бэйсике не программируй, знаний в этих вопросах не прибавится. Возможно я не прав, но по-моему единственное, что может java-программист взять от бейсика - это знание о том что бывают переменные, бывают циклы, бывают условия. И как из всего этого можно собрать алгоритм. Как я сказал выше, все эти знания можно получить и в java, без особых проблемм. Впрочем, я не специалист по Бейсику, если вдруг там есть какая нибудь библиотека, для работы со, скажем, многопоточностью, которая проще javной(хотя куда уж проще?) и с помощью которой новичок сможет узнать что это за зверь такой - многопоточное программирование. Если так и есть - можно меня просветить.
Я действительно не знаю, какие именно темы вызывают наибольшую сложность у школьников. Мне такие вещи давались легко и я наивно считаю что и у остальных людей всё должно получатся так же. Поскольку ну что здесь сложного - в присваивании? Но пусть присваивание будет сложной темой. Чем в бейсике его легче изучать чем в java? И даст ли эта лёгкость настолько серьёзные преимущества, что бы смириться с потерей времени на переучивание с бейсика на java? |
Автор: Bozo 18.4.2006, 20:20 | ||
|
Автор: ALKS 18.4.2006, 20:32 |
Bozo, я не уверне что это лучший учебник. ![]() |
Автор: LSD 18.4.2006, 20:40 |
Господа! Не надо здесь устраивать религиозные войны на тему "С чего лучше начинать обучение" и "Какой язык преподавать в школе". Вопрос звучал как: "Реально ли выучить Java почти не зная C++?", и ответ на него очевиден - да. Сложно ли это, просто ли, нужно ли, это уже другой вопрос. А все желающие подискутировать на тему выбора языка программирования могут пойти в http://forum.vingrad.ru/index.php?showtopic=80928 тему и подискутировать с 12345c. |
Автор: Tirael 18.4.2006, 21:11 | ||||||||||
Н-да ? странно ... никогда не замечал... наверное автор не слишком думал о чем говорил, хотлось бы услышать аргументацию сего бреда ...
А собственно что еще надо начинающему программисту ???
А можно и с большими проблемами. И мой пример - тому доказательство! ты пишешь
И код не работает !!! Если ты не слишком туп, то лезешь в гуугл и пишешь что нибудь вроде Почему ну работает код byte x=0; x=x+1;, и, о чудо!, ты нашел ответ. Он выглядит примерно так: "Здесь необходимо приведение типов". А зачем эти заморочки начинающему программисту??? А посему надо избавить его от этих заморочек, либо же оставить их на потом.
Сколько времени вам надо чтоб перейти с BASIC на Java? Неделя, максимум две. Это ничтожное время. |
Автор: Bozo 18.4.2006, 21:26 |
ALKS ну, и какой же лучший? |
Автор: LSD 18.4.2006, 21:31 |
Модератор: я же просил не разводить здесь религиозный войн. Не прекратите, закрою тему, а особо отличившиеся получат по прянику. Tirael, тебе устное предупреждение за: |
Автор: Tirael 18.4.2006, 22:02 |
LSD, сорри ![]() Просто когда я начал писать этот пост, твоего еще не было. |
Автор: Бонифаций 18.4.2006, 22:47 | ||
Автор знал о чем говорит ![]() http://ru.wikipedia.org/wiki/Дейкстра,_Эдсгер_Вайб ![]() |
Автор: Tirael 18.4.2006, 23:30 |
Предлагаю продолжить уже тут: http://forum.vingrad.ru/index.php?showtopic=92572&view=findpost&p=707036 |
Автор: ПапаМишка 19.4.2006, 10:33 | ||||||||||||
Во первых всем спасиба за участие! ALKS
хм..... а что тогда посоветуешь поставить вместо JBuilder ? Что бы бесплатного и нонятного более менее А по поводу книги - скачал философию Java, стиль нравится изложения, только вот она такая бооольшая ![]() Бонифаций
ой, я родом из детсва, то бишь ZX Spectrum с его бейсиком, что учил без книжек, а ломал чужие рограммки, я в детстве был любознательным и пытливым милым ребёнком ![]() ALKS
по поводу паскаля... не знаю почему, но у меня на него аллергия, не переношу его ![]() Stampede
что такое "гуй" ? ![]()
вот за это спасибА, надеюсь не выгоните ))) ALKS
Кстати, когда работал в школе не было проблем с объяснением такой темы, дети воспринимали её как само собой разумеющуюся Да... я нахожусь в таком шоке от множество разных Jave и массы инфы, руки почти трясутся ![]() Никогда не считал себя глупым, а тут смотрю как тот на ворота ![]() Даже мысли есть, не не лучше ли C#, там вроде как не так всё запутанно. Хотя очень бы не хотелось |
Автор: Бонифаций 19.4.2006, 10:42 |
гуй это GUI - графический интерфейс пользователя. Или "междумордие" как иногда называют |
Автор: FatherFrost 19.4.2006, 10:43 |
Речь идет о GUI - графическом пользовательском интерфейсе. |
Автор: garm 19.4.2006, 11:14 |
Одной из лучших IDE для java считается IDEA. Очень рекомендую. Правда, она не совсем бесплатная. Из бесплатных, пожалуй, eclipse. |
Автор: powerOn 19.4.2006, 11:33 | ||
Я бы NetBeans посоветовал - и бесплатен и обладает простым интуитивно понятным интерфейсом. P.S.: Меня терзают смутные сомненья, что эта тема просто обречена на различного рода споры. И видимо теперь начнем (в очередной раз) IDE-ями мериться.... ![]() |
Автор: ALKS 19.4.2006, 12:09 | ||
Хорошая книжка и НЕ большая ![]() ![]() То что в этой книжке - необходимый минимум. А eсли глубоко... глянь на O'Really ради интереса, там по каждому Java API книга в 150 страниц. И, как правило, по делу и полезно. Java Threads мне весьма помогла когда-то, например. |
Автор: Samuil 4.8.2006, 14:03 |
Конечно возможно! Сам начал сразу с java! ![]() |
Автор: Bulat 6.8.2006, 16:12 |
Я тому пример ![]() Кроме того я видел тут посты некоторых людей очень резких по по поводу студентов начинающих на бейсик, я опять же тому пример. И ничего, прогрессирую, жаль только пока на работе приходится немного иным заниматься, поэтому для прогресса на яве остается не так много времени, и он идет медленнее чем хотелось бы, но идет. ![]() |
Автор: NotGonnaGetUs 9.8.2006, 12:08 |
Зря Дейкстру обижаете ![]() Он говорил ещё о тех бейсиках с нумерацией строк, где не было процедур как таковых. И уж тем более не надо сворачивать в одно qbasic, visual basic и vb.net. |
Автор: вот_это_да 11.1.2007, 17:25 |
Вспомните, когда вы только начинали писать программы, сколько вы лепили синтаксических ошибок. Наверное вам было важнёй обобщить ваши знания, чтобы понять суть вешей, каких-то понятий, а дальше затирать понятые знания на собственных придуманных примерах. Это я к тому, что человеку, по моему надо идти не от сложному к простому, а наоборот. В реале это может выглядеть как изучение вначале ActionScript(язык флеша) или JavaSript, ну а когда поймет что именно для него «рубашка коротка» переползать в Java. У меня у самого так получилось сначала С++, потом скриптовые языки , Java |
Автор: $tatic 11.1.2007, 19:47 | ||
Я бы не рекомендовал ни то, ни другое - они оба очень сложные и зависят от окружения (первый требует знания флеша, второй - принципов работы браузера и стандартов HTML/DHTML). А Java выучить можно не зная C++, причем гораздо легче, чем последний. |