Кіріспе

Компьютерлік бағдарламалауда стандартты кітапхана – бағдарламалау тілінің барлық түрлерінде қолданылатын кітапхана. Бұл кітапханалар әдетте бағдарламалау тілінің сипаттамаларында көрсетіледі; алайда, тілге қатысты кітапхананың мазмұны тілдің қауымдастығының ресми емес тәжірибелерімен (толық немесе жартылай) анықталуы мүмкін.

Шолу

Тілдің стандартты кітапханасын пайдаланушылар көбінесе тілдің бір бөлігі деп есептейді, бірақ жасаушылар оны жеке құрал ретінде қарастырған болуы мүмкін. Көптеген тіл сипаттамалары барлық іске асыруларда болуы тиіс негізгі жиынтықты анықтайды, сондай-ақ міндетті емес бөліктер де қарастырылады. Сондықтан тіл мен оның кітапханалары арасындағы шекара тілден тілге өзгереді. Шындығында, кейбір тілдердегі белгілі бір синтаксистік конструкциялардың мағынасын негізгі кітапханаға сілтеме жасамай түсіндіру мүмкін емес. Мысалы, Java-да мәтіндік тұрақты (string literal) java.lang.String класының бір данасы ретінде анықталады; ұқсас түрде, Smalltalk-та анонимді функция өрнегі ("блок") кітапхананың BlockContext класының бір данасын құрастырады. Керісінше, Scheme тілдің қалған бөлігін кітапхана макростары арқылы құруға жеткілікті үйлесімді кіші жиынтықтарды қамтиды, сондықтан тіл жасаушылары тіл конструкциялары ретінде қандай бөліктерді, ал кітапхана бөліктері ретінде қандай бөліктерді іске асыру керектігін айтуға тіпті көңіл бөлмейді.

Философиялар

Стандартты кітапхананы жобалау философиясы кеңінен әртүрлі. Мысалы, C++ тілінің авторы Бьярн Строструп былай деп жазады:

Бұл салыстырмалы түрде шағын стандартты кітапхананы білдіреді, онда "әрбір бағдарламашы" бағдарламалық құралдардың үлкен жиынтығын құрастырғанда орынды түрде қажет ететін құрылымдар ғана болады. Осы философия C және C++ стандартты кітапханаларында қолданылады. Керісінше, Python тілінің авторы Гвидо ван Россум стандартты кітапхананы әлдеқайда кең қамтитын көзқарас қабылдады. Python кодтауға оңай, объектіге бағытталған, жоғары деңгейдегі тілді ұсынуға тырысады. Python оқулығында ол былай деп жазады:

Ван Россум XML, XML RPC, электрондық хабарламаларды өңдеу және жергілікті тілге бейімдеу үшін кітапханаларды тізімдейді, бұл мүмкіндіктер C++ стандартты кітапханасында жоқ. Осы философия көбінесе скрипт тілдерінде (Python немесе Ruby сияқты) немесе виртуалды машинаны пайдаланатын Java немесе .NET Framework тілдерінде кездеседі. C++ тілінде мұндай мүмкіндіктер стандартты кітапхананың құрамына кірмейді, олар Boost сияқты басқа кітапханаларда ұсынылады.