Существуют ли какие-либо языки программирования, которые имеют встроенную базу данных в качестве первоклассной языковой функции вместо подключения к внешней базе данных SQL (или другой)? Каковы будут недостатки и преимущества такой функции? Как будет выглядеть такая функция и как она изменит способ программирования?
programming-languages
language-design
language-features
database
VirtuosiMedia
источник
источник
Ответы:
Единственный язык, о котором я могу думать, это старые языки xBase, такие как DBase, Clipper и FoxPro. Существует проект GNU, который предлагает бесплатную и в основном совместимую версию, которая называется Clip
Был также Pick Basic, который связывал язык программирования непосредственно с платформой базы данных.
Это было сделано. Это был эволюционный тупик, который ограничивал то, как язык мог получить доступ к данным.
источник
Языки «маленькие» и базы данных «большие»; поэтому, когда они объединяются, это не язык с базой данных как функцией, а база данных с языком как функцией. Многие базы данных имеют некоторые проприетарные языки, например PL / SQL, T-SQL.
источник
Я не обязательно думаю, что правильный вопрос "почему нет?" но "почему это должно быть?" Что можно было бы получить, если бы базы данных были особенностью языка? Помните, что язык находится в самом низу стека программирования. Создание раздутого языка влияет на все . Таким образом, разработчики языка должны не спешить добавлять новые функции, особенно те, которые связаны с такими инвестициями.
источник
fopen()
».Существует 3 устаревшие системы, которые соответствуют вашим требованиям:
Pick и MUMPS были разработаны за годы до того, как первый академический документ по реляционным базам данных (примерно за десять лет до того, как первая коммерческая система баз данных на основе SQL вышла на рынок) от компании, которую мы сейчас называем Oracle, - первая попытка IBM создать продукт потерпела крах и успешная система на основе SQL была позже). Вы можете обнаружить, что они все еще используются (наша местная система общественного транспорта до недавнего времени использовала Pick для системы планирования поездки). Вы не хотите иметь ничего общего ни с Pick, ни с MUMPS, и лучший совет, который я могу дать, - «отойди от клавиатуры, держа руки в воздухе!». Если вы делаете что - нибудь сделать с ними, фраза «ты пожалеешь» должен быть звон в ушах.
Microsoft Access подвергается жесткой насмешке и критике в ИТ-кругах, поскольку для не-разработчика довольно легко сделать критически важное бизнес-приложение из Access и превратить его в нечто, без чего компания в буквальном смысле слова не может жить. Также вполне вероятно, что многие разработчики начали разработку с помощью MS Access, и, по мере того, как дела продолжали увязать, они научились их исправлять (первым шагом традиционно является изучение Visual Basic и переписывание приложения Access сначала в VB, затем в чем-то "лучше"). Можно создать приложение Access с хорошим поведением, которое будет работать с огромным объемом данных - я видел, как это было сделано - но есть более простые способы сделать что-то, и для создания (и поддержания) скважины требуется гораздо меньше навыков Вело приложение из VB и SQL Server.
Начиная с SQL Server 2005, Microsoft представила возможность помещать CLR в хранимые процедуры и функции. И если вы хотите быть хитрым, вы можете создать типы данных, которые затем сможете использовать в качестве столбцов в базе данных. Я думаю, что у Oracle было что-то похожее с Java.
Это, как говорится, я не думаю, что есть что-то, что мешает вам создать или выдвигать гипотезы о них. Pick и MUMPS старше, чем большинство программистов, здесь и отражают очень COBOLy взгляд на мир.
Мой личный совет - держать вещи отдельно. Используйте язык, который хорош для манипулирования данными, в которых нуждается ваш проект (с оговоркой, что иногда «лучшим» языком является тот, который вы можете легко найти программистам, которые могут читать / писать код). Используйте систему баз данных, которая хорошо хранит данные, необходимые для вашего проекта.
источник
Добавление базы данных на язык программирования может обслуживать только очень узкий круг пользователей. Что если они захотят использовать некоторые функции, не относящиеся к РСУБД? Или вообще не хотите использовать базу данных? Компилятор будет излишне раздут для таких случаев использования.
источник
Err.
Ну, во-первых, вы спрашиваете, почему среда, в которой работает язык, не предоставляет базу данных. Язык - это просто средство выражения того, что вы хотите сделать в грамматике; это действительно не предоставляет такие услуги. :)
Тем не менее, есть несколько причин.
Создание эффективной системы хранения базы данных - сложная проблема, вероятно, порядка или больше, чем при создании .NET Framework (например). Если команда попытается включить базу данных в свои рамки, это будет все, над чем они в конечном итоге работают.
База данных, которая загружается, должна находиться на отдельной отдельной машине, а не в процессе доступа к коду.
ORM обеспечивают большую безопасность типов и проверку времени компиляции, которые могут быть полезны для такого действия, без фактической попытки структуры стать базой данных.
Тем не менее, я думаю, было бы неплохо включить какую-то реализацию SQLite в структуру, с которой могли бы работать приложения с меньшими потребностями в доступе к данным. Я не уверен, что это будет полезно в нетривиальных приложениях, однако.
источник
они есть; такие языки называются 4GL . DataFlex мой любимый, хотя я им больше не пользуюсь.
Предупреждение: я помог разработать объектно-ориентированную версию DataFlex v3.0
источник
Я думаю, что ваш настоящий вопрос: «Почему нет языков программирования, которые поставляются с библиотеками баз данных ».
Языки общего назначения рассматривают все операции ввода-вывода как один и тот же, будь то запись или чтение на / с диска, веб-камера, сеть, экран, место в памяти - это все ввод-вывод, и это все, что касается языков программирования с.
На самом деле, кроме чтения / записи в кучу и стек, большинство языков программирования даже не выполняют никакого реального ввода-вывода. Некоторые языки предоставляют нативные функции для выражения операций ввода-вывода (например,
print
команда в BASIC), но большинство языков просто обрабатывают их как обычные вызовы функций (например,printf
в C) и позволяют библиотекам обрабатывать фактическую запись.Некоторые языки, такие как C #, предлагают языковые возможности для выражения запросов, но даже в этом случае это просто выражения в самой базовой структуре данных списков (или
IEnumerable
s, как их называют в .NET), которые переводятся в операции SQL библиотеками - сам язык все еще только работает с очень абстрактными понятиями IO.Что касается того, почему встраивание пакета базы данных в стандартную библиотеку языка программирования не является хорошей идеей, скорее всего, потому что ничто другое в стандартной библиотеке обычно не зависит от функциональности базы данных.
источник
Да. Языки на платформе AS / 400 имеют собственную первоклассную поддержку баз данных.
Это связано с тем, что платформа AS / 400 полностью интегрирована с базой данных и предоставляет множество очень полезных функций, таких как простота навигации по набору результатов, обновляющая значения по пути.
источник
Зависит от языка и платформы. Например, для меня довольно тривиально использовать различные базы данных при работе с C, я просто использую соответствующую библиотеку.
Язык должен поддерживать свою стандартную реализацию, и это, как правило, означает предоставление минимального количества, необходимого для того, чтобы кто-то мог построить то, что он хочет построить. Все остальное становится библиотекой или, возможно, расширением языка, поддерживаемого другими.
По крайней мере, так обстоит дело с языками, которые соответствуют стандартам, установленным такими организациями, как ISO.
источник
Как написано, вопрос частично неверен, как показали некоторые контрпримеры выше.
Поэтому сначала я бы уточнил вопрос: «Почему СУБД обычно не интегрируется в качестве функции языков программирования общего назначения высокого уровня?»
Это по той же причине, по которой другие программные продукты, такие как операционные системы, файловые системы, веб-серверы, уровни кэширования и т. Д., Обычно не являются встроенными. Языки общего назначения обычно работают на уровне абстракции выше, чем у таких продуктов. Поэтому программисту целесообразно внедрить СУБД вязык общего назначения, и эта СУБД может даже предоставлять аспекты своего родительского языка или специфичного для БД декларативного языка для использования программистами БД. Но при написании СУБД слишком много вариантов проектирования, чтобы их можно было исправить на языке программирования общего назначения. Если вы исправите их, вы получите случай, подобный MUMPS, где запутывание этих двух результатов приводит к целой отрасли, увязшей в проблеме курицы и яйца, застрявшей в устаревшей СУБД и устаревшем языке программирования.
источник
Используется для работы в NonStop / SQL, который полностью интегрирован в NonStop / C, NonStop / C ++, NonStop / Cobol, NonStop / Fortran и, возможно, другие языки, а также полностью интегрирован с NonStop / Guardian, операционной системой, на которой установлены компьютеры. RAN.
Я думаю, что это, вероятно, самая близкая интеграция, которую вы можете получить, когда база данных является файловой системой операционной системы. Это также тупик, нет способа отделить какие-либо компоненты, базу данных, операционную систему, аппаратное обеспечение и любое написанное на нем программное обеспечение, и его нельзя использовать отдельно, портировать в другую среду.
Скорее всего, вы попадете на ПК, скорее всего, MS Access, Embarcadero / Borland Delphi - второе место.
После этого вы смотрите на встроенные базы данных в вашем приложении, которые могут иметь ограниченную привлекательность для тех, кто создает автономные приложения, которым требуется набор иерархических данных, которые нелегко сохранить в простом файле конфигурации и / или которые требуют регулярного обновления при запуске приложения. , Или для людей, которые хотят иметь портативную версию приложения, которая поддерживает моментальный снимок части большей базы данных и, возможно, синхронизирует ее с большей базой данных, когда приложение может установить соединение (удобно, например, для продавца, который часто недоступен корпоративная сеть все же нуждается в данных о продажах для своей группы клиентов или доктора в этой области, который хочет получить записи о пациенте, но не может подключиться к сети больницы, потому что нет доступа к сети, куда он должен идти).
источник
Как бывший разработчик Visual Foxpro, я считаю странным, что ни один основной язык не определяет реляционную модель как часть языка.
Наличие полной базы данных не очень хорошая идея, но использование языка «SQL» может быть ОЧЕНЬ полезным.
В ОО существует несоответствие импеданса. Это произошло потому, что объекты и наборы не похожи друг на друга. Но если язык позволит мне определить TABLES, FIELDS, RELATIONS, CONSTRAINS и т. Д. (Без привязки к конкретному хранилищу), он будет очень мощным. Кроме того, создание ORM будет более однозначным отображением.
источник