password_entry->setEchoMode(QLineEdit::Password);
grid->addWidget(username_entry, 0, 1, 0);
grid->addWidget(passwordentry, 1, 1, 0);
QPushButton* button = new QPushButton("Ok", this, "button");
grid->addWidget(button, 2, 1, Qt::AlignRight);
connect (button, SIGNAL(clicked()), this, SLOT(accept()));
}
QString LogonDialog::getUsername() {
if (username_entry == NULL) return NULL;
return username_entry->text();
}
QString LogonDialog::getPassword() {
if (password_entry == NULL) return NULL;
return password_entry->text();
}
ΠΠ° ΡΠΈΡ. 17.15 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
Π ΠΈΡ. 17.15
main.cpp
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ β ΡΡΠ½ΠΊΡΠΈΡ main, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» main.cpp.
1. Π ΡΠ°ΠΉΠ»Π΅ main.cpp Π²Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΠ΅ ΠΎΠΊΠ½ΠΎ LogonDialog ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ database_start. ΠΡΠ»ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ, Π²Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΠ΅ ΠΎΠΊΠ½ΠΎ QMessageBox ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΊΡΡΡΡ LogonDialog ΠΏΡΠΎΡΠΈΡΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π²ΡΡ ΠΎΠ΄Π°.
#include "MainWindow.h"
#include "app_mysql.h"
#include "LogonDialog.h"
#include <kde/kapp.h>
#include <qmessagebox.h>
int main(int argc, char **argv) {
char username[100];
char password[100];
KApplication a(argc, argv, "cdapp");
LogonDialog *dialog = new LogonDialog();
while (1) {
if (dialog->exec() == QDialog::Accepted) {
strcpy(username, dialog->getUsername());
strcpy(password, dialog->getPassword());
if (database_start(username, password)) break;
QMessageBox::information(0, "Title",
"Could not Logon: Check username and/or password",
QMessageBox::Ok);
continue;
} else {
if (QMessageBox:information(0, "Title",
"Are you sure you want to quit?", QMessageBox::Yes,
QMessageBox::No) == QMessageBox::Yes) {
return 0;
}
}
}
delete dialog;
MainWindow *window = new MainWindow("Cd App");
window->resize(600, 400);
a.setMainWidget(window);
window->show();
return a.exec();
}
2. ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ pro-ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠΈΠ»ΠΈΡΡ qmake. ΠΠ°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ cdapp.pro:
TARGET = app
MOC_DIR = moc
OBJECTS_DIR = obj
INCLUDEPATH = /usr/include/kde /usr/include/mysql
QMAKE_LIBDIR_X11 += -/usr/lib
QMAKE_LIBDIR_X11 += /usr/lib/mysql
QMAKE_LIBS_X11 += -lkdeui -lkdecore -lmysqlclient
SOURCES = MainWindow.cpp main.cpp app_mysql.cpp AddCdDialog.cpp LogonDialog.cpp
HEADERS = MainWindow.h app_mysql.h AddCdDialog.h LogonDialog.h
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ ΠΈΡΡΠΈΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² ΡΠ°ΠΉΠ» app_mysql.c Π² ΡΠ°ΠΉΠ» app_mysql.cpp; ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++. ΠΡΠΎ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++,
$ qmake cdapp.pro -ΠΎ Makefile
$ make
$ ./Π°ΡΡ
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ²!
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π³Π»ΡΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡΡ KDE/Qt, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ MySQL, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΠΎΠΆΠ΅ΠΊ Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ². ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π°, Π½ΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ°ΠΊΡΡ ΠΏΠΎΠΏΡΡΠΊΡ!
Π Π΅Π·ΡΠΌΠ΅
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Qt ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ KDE Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. ΠΡ ΡΠ·Π½Π°Π»ΠΈ, ΡΡΠΎ Qt β ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ "ΡΠΈΠ³Π½Π°Π»/ΡΠ»ΠΎΡ" Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ. ΠΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ Qt ΠΈ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ-ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ KDE/Qt ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°ΠΌΠΈ.
ΠΠ»Π°Π²Π° 18
Π‘ΡΠ°Π½Π΄Π°ΡΡΡ Linux
ΠΠ‘ Linux ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΡΠ΄ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ΄ΡΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ; ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π½ΡΠΆΠ½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Ρ.Π΄. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠΎΠ±ΠΎΠΉ ΠΊΠ»ΠΎΠ½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΠΌΠ΅Π²ΡΠΈΡ ΡΡ Π² UNIX ΠΈ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Linux Π² ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ UNIX-ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π΄Π»Ρ Linux, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ Π·Π½Π°ΠΊΠΎΠΌΡΡ ΡΠ°Π±ΠΎΡΡΡ ΡΡΠ΅Π΄Ρ.
Π Π°Π·Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΠ‘ UNIX (Π° ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Linux) Π²ΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°Π»ΠΈ Π² ΡΠΎΡΡΠ°Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ ΡΡΡΡΠΊΡΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠΆΠ΅ ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡΠ»ΠΈΡΠ°Π»Π°ΡΡ. ΠΡΠ΅ ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π΅ ΠΌΠΎΠ³ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅.
Π‘ΡΠ°Π»ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ UNIX-ΡΠΈΡΡΠ΅ΠΌ Π½ΡΠΆΠ½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ, ΠΈ ΡΠ°ΠΊΠ°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ΠΉΡΠ°Ρ Π²Π΅Π΄Π΅ΡΡΡ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π΄Π²ΠΈΠ³Π°Π»ΠΈΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄, Π½ΠΎ ΠΈ ΠΠ‘ Linux Ρ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠ΅ΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Red Hat ΠΈ Canonical, ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π½Π΅-Linux, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ΅ΠΉ IBM. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ Linux Π½Π°ΡΡΠ΄Ρ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² gcc Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π΄ΠΈΠ»Π° Π·Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»Π° Π½ΠΎΠ²ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΠ‘ Linux ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ UNIX-ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠ°Π»ΠΈ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ Ρ ΠΠ‘ Linux.
Π ΡΡΠΎΠΉ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ Linux, ΠΎΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π² Π²Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ Linux, Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ Π² UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΡ ΠΊΠΎΡΠ½Π΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅ΠΌ:
β‘ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘;
β‘ ΡΡΠ°Π½Π΄Π°ΡΡΡ UNIX, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ POSIX, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ IEEE, ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Single UNIX Specification, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Open Group;
β‘ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Free Standards Group, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Linux Standard Base, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠ°ΠΊΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Linux.
Π₯ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΠΈΡΡ ΠΊ ΠΠ‘ Linux, ΡΠ»ΡΠΆΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ Linux Standard Base (LSB), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Web- ΡΠ°ΠΉΡΠ΅ Linux Foundation ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.linux-foundation.org/.
ΠΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠΌΡ Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ. ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ, Π΄Π°ΡΡ Π²Π°ΠΌ ΠΊΡΠ°ΡΠΊΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡ ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΡ, ΠΈ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ β de facto ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ‘ Linux, ΠΏΠΎΡΡΠΎΠΌΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π‘ Π΄Π»Ρ Linux, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π΅Π³ΠΎ ΠΈΡΡΠΎΠΊΠ°Ρ , ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΠ»ΡΡ ΡΠ·ΡΠΊ, ΠΈ, ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ.
ΠΡΠ°ΡΠΊΠΈΠΉ ΡΡΠΎΠΊ ΠΈΡΡΠΎΡΠΈΠΈ
Π’Π΅ΠΌ, ΠΊΡΠΎ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π»ΡΠ±ΠΈΡ ΠΈΡΡΠΎΡΠΈΡ, Π½Π΅ ΡΡΠΎΠΈΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ: ΡΡΠ° ΠΊΠ½ΠΈΠ³Π° ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π° Π½Π΅ ΠΎΠ± ΠΈΡΡΠΎΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±Π·ΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΈΠΌ.
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ 1970-Ρ Π³ΠΎΠ΄ΠΎΠ² ΠΈ Π±ΡΠ» ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΡΡΠ°ΡΡΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ BCPL ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Π. ΠΠ΅Π½Π½ΠΈΡ Π ΠΈΡΡΠΈ (Dennis Π. Ritchie) Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Π² 1974 Π³., ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² ΡΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π‘ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° UNIX Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ PDP-11. Π 1978 Π³. ΠΡΠ°ΠΉΠ°Π½ ΠΠ΅ΡΠ½ΠΈΠ³Π°Π½ (Brian W. Kernighan) ΠΈ Π ΠΈΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ, ΡΠ·ΡΠΊΡ "The Π‘ Programming Language" ("Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘").
ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π» Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ, ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΡΡ, Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ, ΠΎΡΡΠ°ΡΡΠΈ Π±ΡΡΡΡΡΠΌ ΡΠΎΡΡΠΎΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ UNlX-ΡΠΈΡΡΠ΅ΠΌ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π‘ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎ, Π½ΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ Π² ΠΊΠ½ΠΈΠ³Π΅, ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ΅Π½ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π» Π±Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ ΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΈ Π±ΡΠ» Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠΌ.
Π 1983 Π³. ANSI (American National Standards Institute, ΠΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΉ ΠΈΠ½ΡΡΠΈΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ²) ΠΎΡΠ½ΠΎΠ²Π°Π» ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² X3J11 Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ ΡΡΡΠΎΠ³ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ°. ΠΠΎΠΏΡΡΠ½ΠΎ ΠΎΠ±Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½ΠΎΡΠΈΠ»ΠΈ Π² ΡΠ·ΡΠΊ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠ΄Π°Π²Π°Ρ Π΅ΠΌΡ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠΈΠΏΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ Π²Π½ΠΎΡΠΈΠ» ΡΡΠ½ΠΎΡΡΡ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ»ΠΎ ΠΎΠ±ΡΠ΅ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ·ΡΠΊΠ°. ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π±ΡΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² 1989 Π³. ΠΊΠ°ΠΊ ANSI Standard Programming Language Π‘, X3.159-1989 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΊΠΎ C89, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ C90. (ΠΡΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡ ISO/IEC 9899:1990, Programming Languages β Π‘. ΠΠ±Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ.)