Почему мы изучаем Java в университете? [закрыто]

Java часто встречается в академических кругах. В чем причина этого?

25 голосов | спросил Goma 24 32010vEurope/Moscow11bEurope/MoscowWed, 24 Nov 2010 21:03:50 +0300 2010, 21:03:50

14 ответов


73

A few В университетах есть кто-то, кто достаточно хорошо известен, что многие (если не большинство) решения вращаются вокруг симпатий, антипатий, мнений, вкусов и т. д. Это просто, например, Texas A & M Бьярне Страуструп по персоналу; вероятно, для кого-то мало сюрпризов, что их учебная программа имеет тенденцию подчеркивать C ++.

Большинство университетов немного другое. Во-первых, решения часто принимаются гораздо больше на благо преподавателей, чем студенты. Самым большим критерием во многих случаях является «какой язык требует наименьших усилий с нашей стороны?» Большинство из них также осторожны в своей лености - они хотят не только язык с наименьшими передовыми концепциями, но и тот, который (например) является самым медленным для новшеств, обновления или охвата чего-либо нового.

Во-вторых, большинство решений принимается комитетом. Это означает, что окончательное решение редко (если вообще когда-либо) то, что кто-то действительно хотел, - это то, что наиболее мало кто из членов комитета (особенно тех, кто имеет наибольшее влияние) оказался особенно нежелательным. Это похоже на вкус мороженого. На самом деле очень нравится клубника, а другая - аллергия на клубнику. Другой действительно любит шоколад, но кто-то еще этого терпеть не может. Еще один думает, что ром-рейзин велик, но другие два беспокоятся о том, что упоминание «ром» будет интерпретироваться как ободряющее злоупотребление алкоголем, поэтому они попадают в ваниль, хотя это не то, что действительно хотел кто-то.

Наконец, несмотря на то, что обычно работает напрямую, противоречит большинству из двух предыдущих критериев, которые должны выполняться изолированно, они обычно нуждаются (или, по крайней мере, хотят) восприниматься как реагирующие на потребности промышленность.

Java - это пересечение этих трех:

  1. Каждая концепция, которую она воплощает, была хорошо известна к 1980 году. Не так много знать, кроме самого основного понятия о том, что такое ООП.
  2. Это безвкусный, без запаха, нетоксичный, биоразлагаемый, политически правильный выбор.
  3. Почти единственный другой язык в истории, который существовал так долго и (возможно), новаторский, меньше - это SQL. Несмотря на то, что они вряд ли будут называть быстрыми целями, COBOL и Fortran все еще являются новаторскими больше, чем Java.
  4. Он широко используется. Когда вы приступите к этому, у профессоров и PHB есть аналогичные критерии.

Обратите внимание, что я не говорю (например), что больше ничего не нужно знать о Java, чем самое основное понятие о том, что такое ООП - только то, что нужно, чтобы сделать то, что проходит для приемлемой работы по обучению он.

ответил Jerry Coffin 24 32010vEurope/Moscow11bEurope/MoscowWed, 24 Nov 2010 21:51:39 +0300 2010, 21:51:39
22

Я изучал информатику в начале девяностых прямо перед выходом Java. Подход, которым следуют наши профессора, заключался в следующем.

Первый год: вводный курс о программировании и алгоритмах в Паскале. Почему Паскаль? Потому что это чистый язык, предназначенный для обучения концепциям программирования без средств для взлома. Конечно, мы, ученики, знали, что самым популярным языком в то время был C, и что появился новый язык с растущей популярностью: C ++. Поэтому мы постоянно читали и обсуждали эти языки и делали небольшие проекты, используя их самостоятельно. Таким образом, идея заключалась в том, что в классе мы делаем серьезную теорию (Паскаль), а дома мы узнаем, как взломать (C). : -)

В течение второго года у нас был курс операционной системы, в котором нас просили выполнять упражнения в C и сборке. Профессор не дал нам полного курса на C (всего несколько уроков), потому что (1) у нас уже был курс по программированию в течение первого года, и (2) он сказал, что каждый компьютерный ученый, который знает концепции программирования, должен уметь читать книгу и изучать новый язык программирования. Курс прошел довольно гладко, и мы все сочли нормальным, что C и сборка являются практическими темами, которые вы изучаете сами или обсуждаете в коридоре с другими учениками, но не стоило делать курс.

В течение третьего года у нас был курс на языках программирования, в котором мы изучали различные парадигмы языков программирования (императивные, функциональные, логические, объектно-ориентированные), мы изучили общие концепции и методы реализации и переработали основные языки программирования (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). То, что наш профессор сказал нам в начале курса, было следующим: вы не должны оценивать этот курс, думая о том, сколько языков программирования вы знаете по окончании курса, а скорее обо всех общих понятиях, которые вы узнали, о том, как они что они подходят, как они используются на каких языках. Затем изучение конкретного языка - это просто чтение книги, просмотр существующего кода, попытка использования его в конкретном проекте и т. Д.

Я нашел этот подход очень подходящим и эффективным. Я не думаю, что университет должен стремиться к подготовке хороших программистов, а скорее к тому, чтобы дать хорошие знания, которые позволяют понимать языки программирования и программирования. Стать хорошим программистом будет только побочным эффектом этого. Теперь я рассматриваю возможность подачи заявки на работу, где требуется Ada, и я не боюсь ее, хотя я никогда раньше не делал серьезных программ в Ada.

Возвращаясь к вопросу о преподавании Java. Я думаю, что Java часто используется для обучения, потому что он достаточно нейтрален и позволяет объяснять принципы программирования с использованием языка, который также близок к миру промышленности.

Лично я все равно буду использовать Pascal или аналогичный язык для первого курса, потому что это позволит мне различать структуры управления и структуры данных, которые в Java /объектно-ориентированных языках тесно интегрированы. Поэтому, на мой взгляд, Паскаль позволил бы более постепенное введение в основные концепции программирования.

Кроме того, ученый-компьютерщик (и хороший программист) должен знать об основных механизмах /структурах времени выполнения, таких как стек, куча, передача параметров, распределение памяти, указатели или способы реализации абстрактных типов данных без использования встроенного средства языка (списки, наборы и т. д.). Java отнимает много от программистов (это хорошо, конечно), но новичок должен узнать об этих вещах. Возможно, после первого курса программирования в Java следует также взять более общий курс по концепциям языков программирования.

Это только мой опыт и мнения.

ответил Giorgio 27 J0000006Europe/Moscow 2011, 00:54:07
10

Я учился в школе, когда появилась Java. И мой университет почти сразу изменился. В Академии в Академии были головокружительные люди. Я был младшим, когда он вышел, и к тому времени, как мой старший год, почти все академические круги быстро перешли к изменению своей учебной программы. Не только в моем университете, но и везде. Это было так быстро. Наше второе введение было Pascal, и это быстро превратилось в Java менее чем за год. Почему они так быстро обратились? Две большие причины.

Один ученый хочет учить теорию и алгоритмы. Языки, которые облегчают вам изучение тех алгоритмов, которые не требуют большого опыта для работы, являются лучшими: схема, Python, Java, Smalltalk и т. Д. Чем больше язык становится на пути, тем больше отвлекает вас от изучения реальных алгоритмов. В то время, когда языки сценариев были гражданами второго сорта, нахмурились работодателями как дешевыми или быстрыми и грязными. Ученые рассматривали их как больше копирующих кошек, но то, что хотят предприниматели, также имеет влияние на ученых.

Это приводит нас к следующей причине. Работодатели хотят определенного языкового опыта, и в то время это был C /C ++. Но C /C ++ требует много опыта, чтобы учиться, и имеет много угловых случаев, а также, если отрываются и /или носы. Мы изучали курсы на C /C ++, но не на более низких уровнях. В то время работодатели были безумны в программах CS, потому что студенты не выходили из гуру C /C ++.

Java пронизывала отрасль слишком быстро, как наука. Так что, наконец, наука получала то, что хотела. Язык высокого уровня, который был легче изучать, и язык, на котором хотели работодатели. Это было слишком прекрасно. У меня был друг, который вернулся в академию, возможно, через 3 года после моего отъезда, и он сказал, что вы можете найти Java-книгу в каждом предмете CS. Именно так быстро Java взяла на себя академию.

Лично я думаю, что Java не опустил CS. Думаю, на самом деле это было хорошо, потому что студенты могут изучать CS, участвовать в Open Source и находить работу даже в школе. Я по-прежнему считаю, что вы должны изучать множество языков как студент CS, и это не должно быть просто Java. Но, если бы все они использовали питон, Джоэл тоже ненавидел бы на python.

ответил chubbsondubs 2 ThuEurope/Moscow2010-12-02T05:53:50+03:00Europe/Moscow12bEurope/MoscowThu, 02 Dec 2010 05:53:50 +0300 2010, 05:53:50
8

Есть несколько причин для этого, включая:

  • Ожирение на рынке труда - если университеты хотят, чтобы их ученики работали (и рекомендуют больше студентов в университете), им нужно преподавать соответствующие языки.
  • Упрощает учебную программу
  • Легче оценивать и упрощать выполнение своей домашней работы.
  • Мусор, собранный, поэтому не нужно преподавать указатели и ручное управление памятью.

Обратите внимание, что существует ряд школ, которые учат C # по многим причинам. Есть еще много причин, некоторые из которых более характерны для отдельной школы. По сути, Java стала объектно-ориентированной «ОСНОВНОЙ» прошлых лет.

ответил Berin Loritsch 24 32010vEurope/Moscow11bEurope/MoscowWed, 24 Nov 2010 21:11:10 +0300 2010, 21:11:10
6

Мне нравится сообщение Джоэла Спольского, озаглавленное Опасности школ Java . Я думаю, что Берин Лоришх - это правильно, что упрощает циркуль, и он также применим к реальному миру.

Я много раз слышал следующее: «Ученая степень не является наукой, а изучать теорию». Язык не обязательно должен иметь значение (хотя он не мешает), пока теория изучается. Java - относительно простой язык, который позволяет забрать, и это позволяет больше времени на изучение теории за всем. Это одна из причин того, что MIT использует Scheme (так я слышал).

ответил Jetti 24 32010vEurope/Moscow11bEurope/MoscowWed, 24 Nov 2010 21:57:05 +0300 2010, 21:57:05
3

Многие из приведенных выше ответов являются хорошими, но они оставляют что-то.

Java - это многоплатформенный язык. Один студент может использовать свой Mac, другой компьютер и другую учетную запись Unix. Тот же код будет делать то же самое. Подумайте, насколько это проще для преподавателя и ИТ-отдела школы.

Это было реальное значение Java, когда оно появилось. Шутка была «Код один раз, повсеместно отлаживается», но из-за этого действительно аппаратные и операционные системы не принимают.

ответил Matthew Flynn 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 02:05:47 +0400 2011, 02:05:47
1

Я слышал, как профессора говорят, что они используют java для обучения, потому что:

  • использует новую парадигму (ы) (ООП, некоторые дженерики)
  • синтаксически очень простой, хотя довольно многословный
  • нет продвинутых концепций, таких как функции более высокого порядка, закрытие, каррирование или продолжение, которые могут запутать людей, все еще изучающих основные понятия.
  • много написанных для него библиотек
  • студенты не увязли в утечках памяти отладки, так как есть gc

Лично я рад, что взял CS в Беркли, когда они использовали Схему для обучения. Хотя я не понимал, насколько изящным языком он действительно был до нескольких лет спустя.

ответил dietbuddha 2 ThuEurope/Moscow2010-12-02T09:13:50+03:00Europe/Moscow12bEurope/MoscowThu, 02 Dec 2010 09:13:50 +0300 2010, 09:13:50
1

Немного фона

Я взял единственный класс Java, предлагаемый в нашей школе. Это было в конце 90-х - начале 2000 года. Java росла, но почти не удалялась. Исходя из большого количества разработок в C, я был немного расстроен тем, что весь код шаблона должен был запускать Java. Я не мог сосредоточиться на своей задаче. Я не мог просто открыть файл с «открытым». Я должен был определить класс, а затем импорт и т. Д. И т. Д.

Я занимался компьютерной инженерией, поэтому сначала взял программирование сборки, а затем C, а затем C ++, Scheme и этот один курс Java. В основном это была школьная программа, ориентированная на С. Класс алгоритмов преподавался с использованием C.

Когда я вошел в индустрию, Java явно был доминирующим игроком. Возможно, это был единственный игрок во время конвертации из бэкэнд-систем COBOL в приложения для веб-бизнеса Java. Java сделала огромные шаги в деловом мире в течение первых 2000 дней.

В то же время я не знал всех фреймворков Java, но я знал, как кодировать и адаптироваться к среде Java. Если бы я прошел учебные курсы по хорошим стандартам кодирования Java, я, вероятно, мог бы начать с лучшего стиля Java или знания экосистемы Java.

В ретроспективе я не думаю, что это важно.

Чтобы ответить на ваш вопрос: Почему мы изучаем Java в университете?

Java следует преподавать, но не использовать во всех курсах:

Вы должны изучать Java в какой-то момент в колледже, если вы изучаете информатику. Он популярен в деловом мире. Вы должны изучить Java и, возможно, C #. Я бы не стал АБСОЛЮТНО не преподавать Java как вводный курс программирования. И Java, безусловно, не должен быть основным языком, используемым во всех курсах.

О критике Java:

Java получает много критики и всегда имеет. Я читал журналы Java, в которых упоминается Java с вопросительным знаком: «Готова ли Java для Enterprise?». Платформа Java по-прежнему является широко используемой платформой. Но для большинства общих задач программирования Java отлично работает. И нет серьезных проблем с использованием Java. Это не повредит вашему набору навыков. Это может быть, если вы просто полагаетесь на библиотеки Java, не узнавая, что происходит внизу. Но Java не вызывает какого-либо повреждения мозга (некоторые разработчики действительно считают это правдой).

Плюс, почему разработчики не атакуют C или C ++? Или, по крайней мере, C ++. Повелительные парадигмы программирования очень похожи. И я бы никогда не подумал написать webapp в C ++, но я мог бы с Java.

Вот как я бы установил учебную программу:

  1. Вводный курс: схема, язык Python, язык сборки, C (все три)
  2. Курс алгоритмов: C, Haskell, Python (все три)
  3. Курс для операционной системы /сетевого курса: C /C ++
  4. Разработка графического интерфейса: Java Swing, C ++ на Win32
  5. Объектно-ориентированное программирование: (это сложно, у меня не было бы курса ООП). C ++, Java, C #
  6. Enterprise? Разработка: Java, C #, Python
  7. Дизайн языка, компиляторы: Haskell, Scala, C, Assembly, Scheme, Common Lisp, Prolog.

Языки, перечисленные в моей учебной программе, довольно распространены. Многие школы обучают нескольким языкам без проблем. В промышленности вы будете использовать множество разных языков программирования. Вы будете использовать языки, о которых вы даже не слышали.

Тема Java в школах не является проблемой, если они не хотят полностью защитить вас от Java или они хотят преподавать ТОЛЬКО Java. В обоих случаях школы необоснованны.

(Извините Ruby lang)

ответил berlinbrown2 17 Mayam11 2011, 08:38:26
1

Извините, только скучный ответ:

(1) Возможно, вы имели в виду:

«Почему мы изучаем Java в университете, как первый язык программирования?»

(2) Или вы имеете в виду:

«Почему мы изучаем Java в университете, так или иначе, даже если мы изучаем другие языки программирования до Java?»

Похоже, вы действительно имеете в виду оба вопроса.

В случае (1):

Я не думаю, что Java (или .NET C # и Visual Basic) следует преподавать в качестве первых языков программирования. Структурированный & Модульный Pascal должен быть первым, даже если он звучит как старый & устарели.

Многие люди думают, что мы должны научить людей объектно-ориентированному программированию или функциональному программированию inmediatly, просто из-за его «шумихи» или «тренда».

Я изучаю Structured Pascal как небольшую версию «объектно-ориентированного программирования», а не как нечто подобное. Я вижу структурированную программу как один маленький объект.

После этого я предлагаю продолжить функциональные языки и Object Pascal.

И позже, C, C ++, C #, VB.Net, Java.

Основными причинами, по которым мне не нравится Java или C #, как первый язык программирования, - это то, что у них есть понятия «указатели», «указатели на объекты» и «объекты» («ссылки»).

Я считаю, что студенты должны иметь в виду, различия и amp; сходства между этими концепциями. Сравнение объектов Strings в Java - хороший пример этой odditie:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

В случае (2):

Я думаю, что Java или C # следует преподавать в школе, потому что у них есть несколько обновленных хороших функций, и в то же время они имеют реальное использование в мире.

ответил umlcat 16 32011vEurope/Moscow11bEurope/MoscowWed, 16 Nov 2011 21:21:39 +0400 2011, 21:21:39
0
  

В какой-то момент вы должны изучить Java   колледж, если вы изучаете компьютер   наука. Он популярен в бизнесе   Мир. Вы должны изучить Java и, возможно,   C #. Я бы не стал АБСОЛЮТНО   преподавать Java в качестве вводного   программирования. И Java должен   конечно, не является основным языком   используется во всех курсах.

Я не могу больше не согласиться. Java была языком моего колледжа, который вам нужно было взять, чтобы попасть в программу CS & E в моей школе. Java чрезвычайно легко научить. Потому что вы можете ограничить себя определенными понятиями, которые могут изучить «не-программисты».

Я также не могу сказать, будете ли вы или не будете АБСОЛЮТНО преподавать Java в качестве вводного курса программирования. Вы в основном сказали, что вы НЕ АБСОЛЮТНО НЕ УЧИТЕСЬ ?

Простая причина уже объяснена. Java не имеет лицензионных платежей. Вы можете научить его с помощью основного тестового редактора. Разумеется, он используется по неправильным причинам.

Я не согласен с предыдущим ответом, что Java не заставил студентов передавать его «глупее», это действительно показывает, когда у них проблемы с реалистично простыми понятиями, такими как массивы и списки на C ++.

ответил Ramhound 17 Maypm11 2011, 15:46:45
0

Переключение с C на Java произошло в неправильное время .

Где-то около 2000. Я был в последнем классе C в моем университете.

  • C ++ имел слишком много функций , чтобы не путать новичков. (И он все еще делает. И планирует добавить некоторые.)

  • .NET был недостаточно зрелым и был даже больше дорогим, чем сегодня.

  • Цель C была старой , и использование Apple было лететь ниже радара (вокруг него был не iPhone )

ответил ZJR 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 21 Sep 2011 04:49:23 +0400 2011, 04:49:23
0

Я чувствую себя вынужденным добавить к ответам здесь, поскольку я действительно не вижу, чтобы какие-либо из этих ответов действительно охватывали мою перспективу.

Я программист-хобби. Я был впереди кривой, когда дело доходило до «компьютеров» и «программирования». Я закончил мой студент - бакалавры - в 2007 году, а Мастера - два года спустя - 2009. Я работал с множеством языков, включая Assembly, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scripts, Javascript, COBOL и т. Д. .

ИМХО, язык, который используется для обучения программированию учащимся, является показателем того времени, в котором мы сейчас живем. Например, в 1980-х годах Ассамблея была языком низкого уровня, в то время как C считался высоким уровнем язык.

В течение 1990-х годов C ++, Java, Perl и такие языки приобрели важное значение в первую очередь потому, что были намного выше, чем C, и воплощали принципы быстрого развития. Поэтому они перестали преподавать Ассамблее студентам CS и преподавали C как способ выражения алгоритмов. Медленно это изменилось за последнее десятилетие, когда C считается слишком низкоуровневым языком для эффективного использования сущности алгоритмов и без слишком большого количества «системных» ноу-хау. Это на самом деле чрезвычайно важно, поскольку фокус учебной программы CS должен быть более «теоретическим», чем практическим, и каждый раз, когда кто-то хочет написать алгоритм, если он /она увязнет с распределением памяти и арифметикой указателя, тогда вы не получите в любом месте.

Даже сегодня, если вы находитесь в программе Masters CS, вам нужно будет выполнить определенные требования к «системам» (по крайней мере, в США, и это не должно сильно отличаться для университетов США), в котором студенты должны иметь возможность программировать системы и в некоторых случаях так же сильно, как взломать уровень ядра, чтобы фактически удовлетворить требования. Итак, хотя C является not языком дефакто, преподаваемым в школах, важно, если вы хотите специализироваться на системах или высокопроизводительных вычислениях или таких нишах.

Я также хотел бы упомянуть еще один момент: C требует много дисциплины, чтобы все исправить, в то время как языки, такие как Java, немного смягчены в отношении таких ограничений. Это облегчает проведение курсов, не требуя, чтобы RA /TA запускали GDB для отладки студенческой программы:)

ответил void_ptr 16 32011vEurope/Moscow11bEurope/MoscowWed, 16 Nov 2011 11:32:12 +0400 2011, 11:32:12
0

Я думаю, что большая его часть - это то, что используется в отрасли.

В моей программе CS был промышленный консультативный совет, состоящий из высокопоставленных сотрудников местных технических и аэрокосмических компаний, и они внесли большой вклад в учебную программу. Вступительные классы CS сбросили Паскаля в пользу C в год, который я начал (1986), в основном по просьбе IAB. Точно так же был толчок преподавать Аде на некоторых курсах более высокого уровня, поскольку местные аэрокосмические компании вынуждены были использовать его для работы в рамках DoD.

Теперь Java довольно распространен, особенно сейчас, когда Android-устройства уходят. Он сосет с дидактической точки зрения, но тогда и C.

ответил John Bode 27 MaramTue, 27 Mar 2012 00:58:13 +04002012-03-27T00:58:13+04:0012 2012, 00:58:13
0

Потому что они надеются, что меньше студентов не справятся с курсом, что само по себе является ошибкой, ИМХО. Возможно, одна из причин, по которой почти никто не воспринимает университетские степени серьезно, по крайней мере здесь.

Java слишком проста в языке и не учит ПК ограниченной парадигмой ресурсов. В то же время силы в «нет ничего, что не может быть решено с помощью другой линии абстракции».

Да, это хорошо для концепций ООП и проблем с игрушками, но он учит подходить к проблемам с неправильного угла. Используйте аккуратную конструкцию здесь, закрутите остальные.

Но наука известна тем, что мечтает об искусстве ИИ, OWL и других игрушечных технологиях. Хотя они продолжают исследовать такие вещи, иногда кто-то изобретает что-то удивительное там, но если вы хотите быть хорошим разработчиком, вам нужно научиться этому независимо.

ответил Coder 27 MaramTue, 27 Mar 2012 02:38:18 +04002012-03-27T02:38:18+04:0002 2012, 02:38:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132