Стандартная библиотека

Стандартная библиотека языка программирования — набор модулей, классов, объектов, констант, глобальных переменных, шаблонов, макросов, функций и процедур, доступных для вызова из любой программы, написанной на этом языке и присутствующих во всех реализациях языка.

История

В ранних языках программирования (таких как Фортран, Алгол, Кобол, Бейсик) функциональность, не связанная непосредственно с языком, но необходимая для создания большинства реальных программ, включалась непосредственно в язык и нередко реализовывалась непосредственно на уровне транслятора или среды исполнения (для интерпретируемых языков). К числу таких функций относились прежде всего те, которые было невозможно, неудобно или неэффективно реализовывать средствами самого языка программирования: команды ввода-вывода, вычисление стандартных математических и логических функций, специфические операции с некоторыми типами данных, работа с внешними устройствами, с «сырой» памятью, взаимодействие с операционной системой и прочее. Такой подход имел недостатки: компилятор оказывался привязан не только к архитектуре компьютера, которая статична и меняется не так часто, но и к его программной среде, в первую очередь — к операционной системе, которая может меняться гораздо чаще.

В 1970-х годах в процедурных языках широко распространилась концепция модульности. Появились синтаксические средства для описания программы как набора относительно независимых модулей. Естественным следствием стало то, что разработчики языков программирования стали выносить входившие ранее в состав языков универсальные функции во внешние библиотечные модули и подключать эти модули к программам при необходимости. Но исключение стандартных функций из языка могло привести к проблемам совместимости: каждый производитель компилятора мог предоставлять собственные библиотеки. Поэтому вместе со спецификацией языка программирования разработчики начали предлагать спецификацию на стандартную библиотеку — ту часть программного окружения, которая обязана присутствовать в любой реализации данного языка. С этого момента любая реализация того или иного языка программирования разделяется на три части: реализация собственно языка (компилятор), реализация стандартной библиотеки и дополнительные средства (среда разработки, редактор связей, средства документирования, дополнительные библиотеки), которые обычно не стандартизируются вместе с языком, хотя на них могут существовать отдельные стандарты. Теоретически, любой программист, использующий только стандартные языковые средства и стандартную библиотеку, может быть уверен, что его программа будет работать одинаково на любой платформе.

В некоторых случаях стандартная библиотека описывается непосредственно в стандарте языка (Python, Perl, Java), в некоторых — отдельными стандартами (Си), иногда она определяется исходя из практического наличия функций в реализациях языка (Basic, Pascal).

Типовые подходы к проектированию

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

  • Первый — стандартная библиотека должна содержать в себе только те процедуры и функции, которые используются практически всеми и обладают максимальной универсальностью. В частности, этой позиции придерживается Бьёрн Страуструп, автор языка C++[1]. Одним из оснований этой концепции является простое соображение: чем более специфична предоставляемая библиотекой функциональность, тем труднее реализовать её так, чтобы она в полной мере удовлетворяла требованиям каждого конкретного случая; если библиотечная реализация не будет универсальной и эффективной во всех вариантах применения, то для большинства реальных задач она окажется неподходящей, следовательно — бесполезной.
  • Второй — стандартная библиотека должна содержать в себе максимально возможное количество типичных алгоритмов, обеспечивать простую работу с большинством (в идеале, со всеми) объектами, с которыми может взаимодействовать программа. Одним из примеров реализации этого подхода является язык Python с девизом «Batteries included» (батарейки в комплекте)[2]. Доводом в пользу этого подхода является представление, согласно которому скорость написания программ и их корректность в большинстве случаев важнее эффективности (по крайней мере, для большинства прикладных программ), поэтому лучше всего предоставить программисту максимум готовых, тщательно проверенных механизмов, которые он сможет использовать, чтобы программирование «вручную» было необходимо только для действительно нетривиальных алгоритмов; это сэкономит время и убережёт программиста от технических ошибок в написании того, что уже было реализовано.

Состав

В зависимости от возможностей языка, стандартная библиотека может содержать:

Обычно стандартная библиотека содержит основные алгоритмы и структуры данных, необходимые для:

Бьёрн Страуструп выдвинул следующие 11 принципиальных требований к средствам, предлагаемым стандартной библиотекой:

  1. Востребованность — быть важными доступными для всех пользователей языка.
  2. Используемость — прямо или косвенно использоваться всеми программистами для решения всех задач, связанных с целями библиотеки.
  3. Эффективность — для большинства применений библиотечная реализация должна быть не хуже реализации тех же механизмов «вручную».
  4. Независимость от алгоритмов — предоставлять возможность задавать алгоритмы в качестве параметров. Например, стандартная функция сортировки должна давать возможность определить любой алгоритм сравнения элементов.
  5. Математическая примитивность — каждая компонента должна предоставлять одну определённую функцию либо группу функций, используемых только совместно.
  6. Удобство, эффективность и безопасность — по крайней мере, в большинстве типичных вариантов применения.
  7. Завершённость — «Стандартная библиотека может оставить множество функций другим библиотекам, но если уж она взялась за какую-то задачу, то должна обеспечить достаточную функциональность, чтобы отдельным пользователям и разработчикам не приходилось заменять её средства».
  8. Органично сочетаться с языком — служить естественным продолжением языковых средств, типов, операций.
  9. Типобезопасность — безопасность с точки зрения типов по умолчанию.
  10. Поддержка общепринятых стилей программирования.
  11. Расширяемость — способность единообразно работать со встроенными типами данных и с типами, определяемыми пользователем.

Реализация в синтаксисе языка

В некоторых языках функции ввода-вывода являются частью синтаксиса самого языка (например, Basic, Pascal, Python) и не могут быть воспроизведены как самостоятельные функции (процедуры). С одной стороны, это позволяет создавать более гибкий синтаксис для операторов вывода (например, оператор вывода на экран writeln в Pascal существенно проще по синтаксису чем функция printf в стандартной библиотеке языка Си), с другой стороны, это усложняет синтаксис языка и затрудняет использование компилятора языка для создания программ не использующих эти возможности (например, в встраиваемых компьютерах).

Ссылки

  1. Bjarne Stroustrup. The C++ Programming Language. 3rd Ed. Addison-Wesley, 1997
  2. Guido van Rossum. Python Tutorial Архивная копия от 4 октября 2006 на Wayback Machine

См. также

Read other articles:

Logo Wikipedia Zero Negara-negara dengan akses Wikipedia Zero per Mei 2014 Vídeo Jimmy Wales 2014, CeBIT Global Conferences Wikipedia Zero adalah sebuah proyek Wikimedia Foundation untuk menyediakan akses gratis ke Wikipedia kepada masyarakat yang belum tersentuh Internet, kebanyakan di negara-negara berkembang.[1][2] Program ini diluncurkan tahun 2012.[3] Pada bulan Maret 2013, Wikipedia Zero memenangkan SXSW Interactive Award untuk kategori aktivisme.[4] Wik...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Januari 2023. Romaleinae Brachystola magnaTaksonomiKerajaanAnimaliaFilumArthropodaKelasInsectaOrdoOrthopteraFamiliRomaleidaeSubfamiliRomaleinae Alphonse Pictet dan Saussure, 1887 Tribal Chariacrini Rehn & Grant, 1959 Elaeochlorini Rehn & Grant, 1959 Eurostac...

 

Final Kejuaraan Eropa UEFATrofi Kejuaraan EropaMulai digelar1960WilayahEropa (UEFA)Juara bertahan Italia (gelar ke-2)Tim tersukses Jerman Spanyol(3 gelar) Kejuaraan Eropa UEFA atau yang lebih dikenal sebagai Piala Eropa adalah sebuah kompetisi sepak bola yang dibentuk pada tahun 1960. Kompetisi ini diikuti oleh tim nasional pria negara anggota Uni Sepak Bola Eropa (UEFA), badan pengatur sepak bola Eropa, dan berlangsung setiap empat tahun sekali. Pemenang final perdana adalah U...

City of KnoxvilleKotaJulukan: The Marble City(Kota Marbel)Location within the U.S. state of Tennessee.Negara Amerika SerikatNegara bagianlbs Negara bagian TennesseeNashville (ibu kota)Topik History Geography Tennesseans Constitution Governors Lieutenant Governors General Assembly Supreme Court Tennessee National Guard Law Enforcement Visitor Attractions Wilayah East Tennessee Middle Tennessee West Tennessee Blue Ridge Mountains Cumberland Mountains Cumberland Plateau Highland R...

 

Rosanna Lambertucci Rosanna Lambertucci (Roma, 30 novembre 1945[1]) è una conduttrice televisiva, nutrizionista, conduttrice radiofonica, giornalista, scrittrice e divulgatrice scientifica italiana. Indice 1 Biografia 2 Vita privata 3 Opere 4 Televisione 5 Radio 6 Pubblicità 7 Note 8 Altri progetti 9 Collegamenti esterni Biografia Nata in una famiglia di industriali, laureata in giurisprudenza[2], intraprese la sua collaborazione con la Rai alla radio, dove Luciano Rispoli l...

 

Sirkuit Internasional SentulLokasiJl. Sentul International Circuit KM. 42, Ds.Kadumangu, Babakan Madang, Bogor, Jawa Barat IndonesiaZona waktuGMT +7Kapasitas50.000[1]Acara besarA1 Grand Prix, Asian F3, ATCC, GP2 Asia, Formula BMW Asia, Formula V6 Asia, MotoGPSirkuit Original (1994-sekarang)Panjang4,12 km (2,56 mi)Tikungan11Rekor lap1:12.034 ( Rusia Mikhail Aleshin, Trust Team Aleshin, 2016)Situs websentulinternationalcircuit.com Sirkuit Internasional Sentul adalah sebuah sirkuit ...

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт�...

 

Artikel atau sebagian dari artikel ini mungkin diterjemahkan dari Wadjda di en.wikipedia.org. Isinya masih belum akurat, karena bagian yang diterjemahkan masih perlu diperhalus dan disempurnakan. Jika Anda menguasai bahasa aslinya, harap pertimbangkan untuk menelusuri referensinya dan menyempurnakan terjemahan ini. Anda juga dapat ikut bergotong royong pada ProyekWiki Perbaikan Terjemahan. (Pesan ini dapat dihapus jika terjemahan dirasa sudah cukup tepat. Lihat pula: panduan penerjemahan arti...

 

Menara TV Nagoya Sakae (栄code: ja is deprecated ) adalah nama distrik di Naka-ku, Nagoya, Prefektur Aichi, Jepang. Distrik ini merupakan pusat kota yang berkembang di sekitar Persimpangan Sakae, Stasiun Sakaemachi Jalur Meitetsu Seto dan Stasiun Sakae Kereta Bawah Tanah Nagoya. Sakae dan Stasiun Nagoya merupakan dua pusat kota utama di Nagoya. Dengan kereta bawah tanah, dari Stasiun Nagoya ke Sakae memakan waktu kurang dari lima menit. Di tempat ini terdapat rumah makan, pusat perbelanjaan,...

Officer rank of the United States Navy and Coast Guard Future ADM Michelle Howard when she was a U.S. Navy RDML on the USS Wasp (LHD-1) in 2009. A rear admiral in the uniformed services of the United States is either of two different ranks of commissioned officers: one-star flag officers and two-star flag officers. By contrast, in most other countries, the term rear admiral refers only to an officer of two-star rank. Rear admiral (lower half) For the Navy's previous one-star rank, see Commodo...

 

Cet article est une ébauche concernant une localité allemande. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Wolfhagen La place du marché. Armoiries Administration Pays Allemagne Land Hesse District(Regierungsbezirk) Cassel Arrondissement(Landkreis) Cassel Bourgmestre(Bürgermeister) Reinhard Schaake Code postal 34466 Code communal(Gemeindeschlüssel) 06 6 33 028 Indicatif téléphonique 05692 Immatriculati...

 

1974 United States Senate election in Oklahoma ← 1968 November 3, 1974 1980 →   Nominee Henry Bellmon Ed Edmondson Party Republican Democratic Popular vote 390,997 387,162 Percentage 49.38% 48.90% County results Bellmon:      40-50%      50-60%      60-70%      70-80% Edmondson:      40–50%      50–60%  ...

Manuel Gutiérrez Aragón Manuel Gutiérrez Aragón en la Seminci 2011Información personalNombre de nacimiento José Manuel Gutiérrez SánchezNacimiento 2 de enero de 1942 (82 años) Torrelavega, EspañaNacionalidad EspañolaInformación profesionalOcupación Director de cine y guionista Años activo desde 1969Miembro de Real Academia de Bellas Artes de San FernandoReal Academia Española Distinciones Premio Internacional de la Crítica de Berlín (1973)Oso de Plata a la mejor dir...

 

Academic journal National AffairsEditorYuval LevinCategoriespublic policyFrequencyquarterlyPublisherNational Affairs, Inc.Founded2010CountryUnited StatesLanguageEnglishWebsitenationalaffairs.comISSN2150-6469OCLC430491407 National Affairs is a quarterly magazine in the United States about political affairs that was first published in September 2009. Its founding editor, Yuval Levin, and authors are typically considered to be conservative and right-wing.[1][2][3] The mag...

 

[pranala nonaktif permanen]Nia Dinata, sutradara Indonesia pertama yang filmnya lebih dari sekali dikirim ke nominasi Film Internasional Terbaik Academy Award Indonesia telah mengirimkan film untuk nominasi Academy Award for Best Foreign Language Film sejak 1987. Penghargaan ini dianugerahkan setiap tahun oleh Academy of Motion Picture Arts and Sciences kepada film-film non-Amerika Serikat yang dialognya tidak berbahasa Inggris.[1] Kategori ini pertama muncul pada Academy Awar...

Lapangan kota Cieszyn Untuk desa di Provinsi Lublin, lihat Cieszyn (desa). Cieszyn (bahasa Ceko Těšín, bahasa Jerman Teschen) ialah sebuah kota di Polandia bagian selatan yang berpenduduk 35.642 jiwa (2006). Cieszyn terletak di Provinsi Silesia dekat Sungai Olza, sedang di seberangnya ada kota Český Těšín di Republik Ceko. Cieszyn adalah salah satu kota tertua di Silesia. Dengan arsitekturnya, yang menggabungkan unsur Austria dan Polandia, dan kota tuanya yang indah, menjadikan Cieszy...

 

Town in Massachusetts, United StatesWayland, MassachusettsTownFirst Parish in Wayland SealLocation in Middlesex County in MassachusettsCoordinates: 42°21′45″N 71°21′41″W / 42.36250°N 71.36139°W / 42.36250; -71.36139[1]CountryUnited StatesStateMassachusettsCountyMiddlesexSettled1638Incorporated1780Government • TypeOpen town meetingArea • Total15.9 sq mi (41.2 km2) • Land15.2 sq mi (39.4...

 

Disambiguazione – Se stai cercando il film del 1991, vedi Il segreto di una donna (film 1991). Il segreto di una donnaGene Tierney in una scena del filmTitolo originaleWhirlpool Lingua originaleinglese Paese di produzioneStati Uniti d'America Anno1949 Durata98 min Dati tecniciB/Nrapporto: 1,37 : 1 Generenoir, thriller RegiaOtto Preminger SoggettoGuy Endore SceneggiaturaBen Hecht, Andrew Solt ProduttoreOtto Preminger Casa di produzione20th Century Fox FotografiaArthur C. Miller Mon...

Questa voce o sezione sugli argomenti film thriller e film drammatici non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento. Il sospettoEmilio (Gian Maria Volonté)Lingua originaleitaliano Paese di produzioneItalia Anno1975 Durata111 min Generedrammatico RegiaFrancesco Maselli SoggettoFrancesco Maselli Sceneggia...

 

アナキズム 潮流社会的無政府主義 集産主義的無政府主義 アナルコサンディカリスム 無政府共産主義 左派アナキズム ポスト左翼無政府主義 個人主義的無政府主義 無政府資本主義リバタリアン社会主義 自由市場アナキズム エゴイスト無政府主義 平和主義アナキズム パナーキズム 無政府フェミニズム グリーンアナキズム民族アナキズム宗教的アナキズム キリスト教�...