1.01.2000

C (язык программирования Си)



Компилируемый
(значит код сначала целиком переводится в "машинный", а потом выполняется; есть ещё интерпретируемый, когда выполняются специальной программой; любой язык может быть ком. и инт., так что данное разделение весьма условно и относится к практике применения языка, а не является его свойством)
статически типизированный язык программирования
(переменная получает тип в момент объявления (var) (Pascal, C); в динамическом - получает в момент присваивания (Python, PHP))
общего назначения,
разработанный в 1972 как развитие языка "B". Первоначально был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ.

Создатели
Dennis Ritchie (1941-2011)
Кен Томпсон

Си (его компилятор есть везде)
создавался как замена Ассемблеру (который на всех аппаратных платформах разный, и является практически прямой моделью архитектуры машины).

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

Изначально создатели языка Си и системы Unix предполагали, что возникнут другие языки, более удобные для программистов (каждый язык со своей специализацией). И изначальная философия системы Unix: все программы портируемы и все языки надстраиваются над базовым языком Си.

Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения.
Его синтаксис стал основой для  C++, C#, Java, Objective-C.
Так же он повлиял на Cyclone, Java, BitC

Свободное программное обеспечение, написанное на Си


  • 7-Zip
  • Ядро Linux
  • Advanced Maryland Automatic Network Disk Archiver
  • Aircrack-ng
  • Aisleriot
  • Amsterdam Compiler Kit
  • Apache HTTP Server
  • Asterisk
  • Audacious Media Player
  • Barebox
  • Beryl
  • Binkd
  • Blender
  • Bluefish
  • BlueGriffon
  • Bongo
  • Bullet Physics Library
  • Cairo
  • CalculiX
  • Chmod
  • Cinnamon
  • Claws Mail
  • CMake
  • Common UNIX Printing System
  • Compiz
  • Compiz Fusion
  • Conky
  • CPython
  • CRIU
  • CVS
  • Cygwin
  • DataparkSearch
  • DBMail
  • DeaDBeeF
  • Denemo
  • DOSBox
  • Dovecot
  • Dynamips
  • EasyTAG
  • Eggdrop
  • Eglibc
  • Empathy
  • Exim
  • Expat
  • Fbxkb
  • Ffdshow
  • FFmpeg
  • FIGlet
  • Filesystem in Userspace
  • Fprint
  • FreeRADIUS
  • Ganglia
  • Geany
  • Gedit
  • GFTP
  • GiFT
  • Git
  • Glade
  • Glitz
  • GNOME
  • GNOME Calculator
  • GNOME Games
  • GNU GRUB
  • GnuWin32
  • GPM
  • GPSBabel
  • GraphicsMagick
  • Graphviz
  • Gretl
  • GStreamer
  • GThumb
  • GTK+
  • HTML Tidy
  • Htop
  • Hula
  • ImageMagick
  • Ipchains
  • Iperf
  • IPython
  • John the Ripper
  • KeePassX
  • LADSPA
  • LibreDWG
  • Libvirt
  • LILO
  • LiteStep
  • LPRng
  • Luakit
  • LXDE
  • MATE
  • Maxima
  • Maximus (BBS)
  • Mdadm
  • Media Lovin' Toolkit
  • Medit
  • MEncoder
  • Mercurial
  • Midnight Commander
  • Mkdir
  • Monit
  • Moonlight
  • MPlayer
  • Music On Console
  • Mutter (оконный менеджер)
  • N2n
  • Nautilus (файловый менеджер)
  • Network Audio System
  • NetworkManager
  • Newton Game Dynamics
  • Nginx
  • Notepad2
  • NSD
  • Onion Browser
  • Openbox
  • OpenLDAP
  • OpenVPN
  • OptiPNG
  • Pacman (система управления пакетами)
  • Pango
  • PhotoRec
  • Pidgin
  • Pkgsrc
  • Polkit
  • Postfix
  • Premake
  • Pypanel
  • QEMU
  • Radare2
  • Rhythmbox
  • Ring (программа)
  • ROX Desktop
  • RPM
  • RRDtool
  • SeaBIOS
  • SoX (программа)
  • SPICE (симулятор электронных схем)
  • Subversion
  • SWIG
  • Sylpheed
  • Syslinux
  • Tesseract
  • Textadept
  • Tkhtml
  • Tor
  • TORQUE (программа)
  • Transcode
  • Transmission
  • TrueCrypt
  • Tsclient
  • UltraVNC
  • Urxvt
  • Usplash
  • Util-linux
  • Uzbl
  • VeraCrypt
  • Vim
  • VirtualDubMod
  • VLC (медиаплеер)
  • Wayland
  • Webalizer
  • WeeChat
  • Widelands
  • Wireshark
  • XChat
  • Xdebug
  • Xen
  • XeTeX


C++

Пользуясь тем, что язык Си многие знают, Бьёрн Страуструп решил его "проапгрейдить": прилепил дополнительные фичи (большей частью совершенно идиотские - вроде перегрузки стандартных операторов) и добавил "объектно-ориентированность". Ну, что касается "объектно-ориентированности" - это отдельный разговор, а в целом получили следующее: в язык введены неявные скрытые механизмы, которые не работают одинаково на разных платформах, портируемые программы писать невозможно, и в то же время язык неудобен для высокоуровневого программирования, как и Си. Компиляторы Си++ намного сложнее, чем компилятор Си, и есть не везде. В основном Си++ используют, потому что под него написаны библиотеки классов (как правило привязанные к определённой платформе и операционной системе). Деньги в это вбуханы чудовищные - помню по той рекламной кампании, которая сопровождала продвижение Си++.