Java или C++ для базы данных

Рейтинг: -1Ответов: 5Опубликовано: 10.02.2015

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

Вот в чем суть вопроса, хочу услышать ваше мнение, стоит ли мне писать базу данных на Java и хватит ли мне ~3-х месяцев для реализации этого проекта на незнакомом языке или же эта задача требует неплохого знания Java, и мне стоит перестраховаться и писать на знакомом C++?

И второй вопрос: на чем нынче более актуально и какой язык более подходит для цели написания базы даных Java или C++?

Ответы

▲ 7

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

  1. Хотите, чтобы в голове прояснилась философия джавы - прочитайте книжку с одноименным названием авторства Брюса Эккеля. Именно она дала мне фундаментальные знания языка. Сделайте это перед тем, как писать код (потратите неделю, но затем потратите меньше времени на исправление косяков).
  2. Джава обладает очень мощной стандартной библиотекой. Если вам нужен какой-то велосипед - поищите его вначале в библиотеке, а затем уже в других местах.
  3. Не верьте никому, что джава обладает плохой производительностью, надежностью и т.д. Так говорят только люди, незнающие ее. Джава - очень мощный язык, позволяющий делать удивительные вещи.
  4. Программируйте, больше программируйте. 3 месяца программирования по 3 часа в день дадут вам колоссальный опыт, который вы не приобретете на лекциях и читая книги.
▲ 2

@RandomGuest, раз

Написать новую СУБД

тогда, видимо (исходя из ~3 мес.), Вы должны сосредоточиться на "внутренностях", т.е. том, что называют физической организацией и API для основных операций с этим уровнем.

Тут Вы будете должны довольно тесно взаимодействовать с ОС для эффективной работы с файлами.

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

▲ 2

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

▲ 1
  1. Хотите учить Java — учите её. Проект это хорошая практика, даже если вы его завалите (что вряд ли, хороших студентов часто вытаскивают), у вас будет опыт, который пригодится в реальной жизни.
  2. За 3 месяца вы Java хорошо не выучите. Впрочем, и C++ тоже. Java учится легче.
  3. Если вы делаете что-то с прицелом на будущее, возможно вам нужен фреймворк наподобие Hibernate. (Найдите и почитайте, готовьтесь к массивам англоязычного текста.) Вообще, Java вся про фреймворки, вам придётся выучить их много.
  4. Мне кажется, Java больше подходит для баз данных. (Но я могу ошибаться, я не большой специалист в ней.) Но вы должны выбирать не по этому критерию, а по критерию «пригодится или нет в будущем». Если вы хотите изучать Java, а ваша тема курсовой не подходит, поменяйте тему курсовой. Плевать, что вы типа писали её с начала года, практика важнее.
▲ 1

Для написания СУБД преимущественно используются Си и в некоторых моментах могут подключать С++. Даже такие любители Java, как Oracle и IBM, написали свои СУБД на Си + С++. Это обусловлено требованиями, которые предъявлены к СУБД: много I/O операций, большие объемы данных в оперативной памяти и операции с ними, и главное, это все должно быть максимально быстрым.

Но, я думаю, Вы не собираетесь писать СУБД для реального использования с учетом всех особенностей и требований к ним, поэтому язык Вам тут будет совершенно неважен. Можете выбрать как Java, так и C++, особой разницы быть не должно. Какие-то глубокие познания языка тут не нужны, скорее нужно хорошее понимание, как функционирует СУБД и какие компоненты она содержит.

И я бы на вашем месте уточнил задачу по вопросу @avp, чтобы обойтись без: "Написать новую СУБД, как я понимаю".