Język a biblioteka standardowa

0

Panowie i Panie, zastanawiam się jak to jest z językami programowania, gdzie leży granica między językiem a biblioteką standardową. Weźmy C.
Co należy do samego języka a nie biblioteki poza instrukcjami sterującymi, typami funkcjami itd, chodzi mi o to czy znajduje się w samym języku jakaś funkcja typu printf? jak w ogóle zaimplementowany jest printf? Co można zrobić z gołym językiem bez biblioteki?
I czy w językach skryptowych jest podobnie czy inaczej?

0

Jakbys mial funkcje w jezyku to nie uwazasz, ze jego rdzen troche za bardzo bylby przeladowany.
W samym C nie masz funkcji typu printf, tylko wlasnie typy danych, operatory, no i sizeof() funkcje. Moze jest jeszcze jakas funkcja w samym C, ale w tej chwili zadna nie przychodzi mi do glowy, moze abs chociaz watpie.
Funckje takie jak masz w string.h to glownie sa zrealizowane na pointerach, funkcje z stdio przewaznie juz wymagaja miec cos pod soba, czyli system, aby to wejscie i wyjscie bylo jakos realizowane, bo przeciez sama biblioteka moze tylko wykorzystac potencjal jezyka i mozliwosci systemu, funkcji z stdlib tez nie zrealizujesz bez pomocy z zewnatrz.
Tak naprawde w jezykach samych to za duzo cudow nie ma ;)

0

printf to zwykła funkcja z biblioteki standardowej, zaimplementowana jako funkcja o zmiennej liczbie argumentów (ang. variadic function). Sam możesz tworzyć takie funkcje z pomocą typu va_list i kilku makr zdefiniowanych w <stdarg.h>.

Z drugiej strony, w takim Pascalu Writeln to nie żadna zwykła funkcja, tylko element języka (zresztą nie zachowuje się ona jak zwykła funkcja).

0

moze abs chociaz watpie.

dla x<0 :
x = -x

zwróć x

Raczej nie bardzo ; p

W odpowiedzi na temat : wydaje mi się, że język składa się ze składników elementernych, tj. słów kluczowych, typów i ich znaczenia no i do tego sposób ułożenia kodu (nie wiem jak to nazwać, klamry itp ; p). poza tym jeszcze jakieś kruczki mogą się znaleźć które mi teraz nie bardzo przychodzą do głowy

reszta to funkcje z bibliotek, w których funkcje były pisane za pomocą samej składni języka ; ]

0

Co należy do samego języka

Pewnie to, co ci zadziala bez dolaczania zadnych plikow naglowkowych.

0

Język jest opisany przez gramatykę.

0

reszta to funkcje z bibliotek, w których funkcje były pisane za pomocą samej składni języka ; ]

W pascalu np. spora część funkcji jest tylko aliasami dla kodu w asemblerze.
A w językach skryptowych to właściwie wszystko jest językiem

edit:

Pewnie to, co ci zadziala bez dolaczania zadnych plikow naglowkowych.

Nie bierzesz pod uwagę że często kompilatory dorzucają 'od siebie' jakąś biblotekę "systemową".

0

MSM - odpisałem do przykładu o C : )

0

MSM: nie jest tak w wielu jezykach, chociazby dajmy na to Pythona, ktory korzysta z dolaczanych modulow:
from sys import exit lub tak import sys, przy drugim sposobie modul jest ladowany w przestrzen adresowa procesu i mozesz bezposrednio wywolywac funkcje.
W samym pythonie masz operatory, komentarze, instrukcje warunkowe, petle, funkcje, klasy, obiekty i wieksze struktury, typu slownik, lista, krotka i na tym sie konczy jezyk. poza tym w tym jezyku wszystko praktycznie jest obiektem, wiec rzeczywiscie jesli korzystasz z listy, ktora jest w jezyku to dostajesz kilka metod do jej obslugi, ale krotki nie maja metod, a slowniki malutko.
Jest co prawda kilka funkcji, ale glownie wszystko jest importowane.

Jeszcze moge powiedziec o bash i batch, ktore sa ubogie i naprawde nie maja prawie nic, wiec tez nie mozesz powiedziec, ze jezyki skryptowe maja funkcje wbudowane tak uogolniajac ;)

0

gdzie leży granica między językiem a biblioteką standardową.

W każdym języku gdzie indziej. Ale jakie to ma znaczenie?

0
Krolik napisał(a)

gdzie leży granica między językiem a biblioteką standardową.

W każdym języku gdzie indziej. Ale jakie to ma znaczenie?

Chcę wiedzieć ;)

0

Najłatwiej dowiedzieć się czytając dokumenty opisujące standard danego języka.
Podział jest na to co określa taki dokument i wszystkie rzeczy pozostałe.

Z punktu widzenia programisty jednak płynność tej granicy może być duża, bo co powiesz o językach, które pozwalają definiować np. własne instrukcje sterujące programem? Albo manipulować drzewem składniowym programu przed kompilacją za pomocą makr?

Np. LISP jest znany z tego, że w samym języku prawie nie ma nic, ale za to język jest tak elastyczny, że praktycznie wszystko można zrobić za pomocą bibliotek. Np. obiektowość w CLOS jest w całości zrobiona jako biblioteka - w samym trzonie języka nie musieli zmieniać nic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1