Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ C/C++ / ΠŸΠ΅ΡΠΎΡ‡Π½ΠΈΡ†Π° / Π₯Π°Π±Ρ€

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ быстро ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ идСю, для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ Π²ΠΎ врСмя обучСния Π½ΠΎΠ²ΠΎΠΌΡƒ языку. Когда я Ρ€Π΅ΡˆΠΈΠ» Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ C, я понял, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ ΠΈΡ… Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Оказалось, Ρ‡Ρ‚ΠΎ сущСствуСт нСсколько ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² C/C++. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ здСсь ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€.

iGCC
лицСнзия: GNU GPL v.2 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅
вСрсия для Windows: Π½Π΅Ρ‚
разрабатываСтся с 2009 Π³ΠΎΠ΄Π°, послСдняя вСрсия β€” 19.03.2012

iGCC β€” тонкая ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ GCC, написанная Π½Π° Python. Π‘Π°ΠΌΡ‹ΠΉ лСгковСсный ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² (184Кб Π² распакованном Π²ΠΈΠ΄Π΅). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многострочный Π²Π²ΠΎΠ΄. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() со всСми Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ послСдствиями.

PicoC
лицСнзия: New BSD license
вСрсия для Windows: Π½Π΅Ρ‚
разрабатываСтся с 2009 Π³ΠΎΠ΄Π°, послСдняя вСрсия β€” 20.02.2011

PicoC β€” создавался ΠΊΠ°ΠΊ скриптовый язык для Π±ΠΎΡ€Ρ‚ΠΎΠ²Ρ‹Ρ… систСм Π‘ΠŸΠ›Π. Авторы Π·Π°ΡΠ²Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для встраиваСмых устройств. НС являСтся ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ISO C. ВСсит 1,9 Мб. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многострочный Π²Π²ΠΎΠ΄ ΠΈ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

UnderC
лицСнзия: GNU LGPL
вСрсия для Windows: Π΅ΡΡ‚ΡŒ
разрабатывался с 2001 Π³ΠΎΠ΄Π°, послСдняя вСрсия β€” 29.11.2003

UnderC β€” создавался ΠΊΠ°ΠΊ быстрый нСбольшой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ стандарта ISO C. Π’ Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ встроСнныС классы стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ string, vector, map. Π›Π΅Π³ΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

К соТалСнию, ΠΌΠ½Π΅ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ UnderC. Но, судя ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ (распакованыС исходники β€” 1,6Мб), ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ возмоТностям.

Ch
лицСнзия: проприСтарная
вСрсия для Windows: Π΅ΡΡ‚ΡŒ

Ch β€” ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C/C++. ВСрсия Standard бСсплатна для коммСрчСского использования. Π•ΡΡ‚ΡŒ сборки Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Linux ΠΈ Windows, Π½ΠΎ ΠΈ Mac OS, Solaris, FreeBSD ΠΈ ΠΏΡ€. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандарт C90 ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ самый Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π‘. ВСрсия для Windows ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ консоли ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ UNIX, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ vi, ls, awk, sed, vim с подсвСткой синтаксиса. Ch ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ командная оболочка… ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Ρ„ΠΈΡ‡ здСсь. Выглядит вСсьма ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многострочный Π²Π²ΠΎΠ΄, объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

CINT
лицСнзия: GNU LGPL
вСрсия для Windows: Π½Π΅Ρ‚

ROOT β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ CERN для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… (судя ΠΏΠΎ всСму ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ) ΠΈ CINT Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 95% ANSI C ΠΈ 85% C++. Π•ΡΡ‚ΡŒ подсвСтка синтаксиса. РасхоТдСния со стандартом описаны здСсь. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многострочный Π²Π²ΠΎΠ΄ ΠΈ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΎΠ½ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΠ· сторонних Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΠΊ кусочки ΠΊΠΎΠ΄Π°, Π² самом ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ ΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ нСльзя).

К соТалСнию, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² уровня, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, встроСнного Π² python для C Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚. CINT ΠΈ Ch β€” самыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅, Π½ΠΎ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ удобством использования, iGCC ΠΈ PicoC ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обучСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° UnderC ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π°.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ бСсплатный компилятор для C / C++

C β€” это простой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Он достаточно прост Π² освоСнии. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания любой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

C++ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» создан ΠΊΠ°ΠΊ надмноТСство C. Π―Π·Ρ‹ΠΊΠΈ C ΠΈ C++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых популярных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ бСсплатный компилятор для C / C++ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄ Windows (16-разрядныС, 32-разрядныС ΠΈ 64-разрядныС вСрсии), Linux (32-разрядныС ΠΈ 64-разрядныС вСрсии), OS / 2 ΠΈ MS-DOS (16-разрядныС ΠΈ 32-разрядныС Ρ€Π΅ΠΆΠΈΠΌΡ‹). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Watcom β€” это Π±Ρ‹Π» извСстный коммСрчСский компилятор, ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΈ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ исходный ΠΊΠΎΠ΄ (Π² соотвСтствии с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Sybase Open Watcom).

Для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов Microsoft Visual Studio Community Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Ρ‹Ρ… инструмСнтов ΠΈΠ· коммСрчСских вСрсий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π² своС распоряТСниС IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ Android. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ISO C++ 11, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ISO C++ 14 ΠΈ C++ 17. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя компилятор C ΡƒΠΆΠ΅ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎ устарСл ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ C99.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C#, Visual Basic, F# ΠΈ Python. Π’ Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я писал эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Visual Studio Community 2015 «бСсплатный инструмСнт для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΒ».

Clang β€” компилятор C, C++, Objective C ΠΈ Objective C++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ Apple. Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM. Clang Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стандарты ISO C ΠΈ C++, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C11, ISO C++ 11, C++ 14 ΠΈ частично C++ 1z.

Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² сСмСйствС компиляторов C GNU. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C для Windows Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. К соТалСнию, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ½ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Π²Π°ΠΌ придСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ MinGW-w64 прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторам C ΠΈ C++ GNU для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² систСмС Windows. Π’ случаС MinGW-w64 эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт кросс-компиляторы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Windows ΠΈΠ· систСмы Linux.

Π­Ρ‚ΠΎ вСрсия Π½Π°Π±ΠΎΡ€Π° компиляторов Open64 (описанного Π½ΠΈΠΆΠ΅), которая Π±Ρ‹Π»Π° настроСна для процСссоров AMD ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния ошибок. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C / C++ соотвСтствуСт стандартам ANSI C99 ΠΈ ISO C++ 98, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор Fortran), 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ x86, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° SSE / SSE2 / SSE3, OpenMP 2.5 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, MPICh3 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с распрСдСлСнной ΠΈ раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ; содСрТит ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ, Ρ†ΠΈΠΊΠ»-ΡƒΠ·Π΅Π», ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Набор поставляСтся с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ AMD Core Math Library ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Для этого Π½Π°Π±ΠΎΡ€Π° компиляторов трСбуСтся Linux.

ЯвляСтся бСсплатным компилятором для Windows 7 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Win32, Windows 3.1 (Win16), OS / 2, Netware NLM, MSDOS (16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ) ΠΈ Ρ‚. Π΄. Watcom Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ популярным компилятором нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Sybase Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π»Π° Π΅Π³ΠΎ. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя довольно извСстный STLport (рСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных шаблонов C++). ОбновлСниС: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΡ…ΠΎΠΆΠ΅, застопорился, ΠΈ Π² настоящСС врСмя Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Open Watcom V2 Fork (описан Π²Ρ‹ΡˆΠ΅).

Digital Mars C / C ++ являСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Symantec C++ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Win32, Windows 3.1, MSDOS ΠΈ 32-разрядных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… MSDOS. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ПК Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ процСссора с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (ΠΌΠ°ΡˆΠΈΠ½Ρ‹ pre-Pentium), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ C++ ΠΈΠ· Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ руководства ΠΏΠΎ C++ (ARM) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка AT & T вСрсии 3.0, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° Π²ΠΎ врСмя выполнСния.

Π­Ρ‚ΠΎ графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ уровня исходного ΠΊΠΎΠ΄Π° для X Window, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка C. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько исходных Ρ„Π°ΠΉΠ»ΠΎΠ². МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания исполняСмого Ρ„Π°ΠΉΠ»Π° с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² этом исполняСмом Ρ„Π°ΠΉΠ»Π΅. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ»ΠΈ просто для изучСния языка, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ этот инструмСнт. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Solaris, SunOS, Linux, FreeBSD, BSD / OS ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Unix-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ старый (популярный) компилятор C BDS для систСм CP / M 8080 / Z80? Π’ настоящСС врСмя этот компилятор языка C находится Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ доступС, Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с исходным ΠΊΠΎΠ΄ΠΎΠΌ языка ассСмблСра. ΠŸΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ компилятора с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ руководством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для простой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° 8080/8085 / Z80 для встраиваСмых систСм (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для Π·Π°ΠΌΠ΅Π½Ρ‹ любого ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обращаСтся ΠΊ функциям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы).

Π­Ρ‚ΠΎ интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Win32, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π² сСбя компилятор C++ egcs ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU ΠΈΠ· срСды Mingw32. А Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм компилятора Mingw32 gcc Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows. Он Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ установки для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π² Windows, Ρ‚Π°ΠΊ ΠΈ Π² DOS, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (с подсвСткой синтаксиса ΠΈ автоматичСским Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°). Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Win32 ΠΈ MSDOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Intel ΠΈ Motorola hex (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для встроСнных систСм). Для Π²Ρ‹Π²ΠΎΠ΄Π° MSDOS ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ DOS.

DeSmet C Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° C Π² 1980-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ компилятор C для MSDOS. Он Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL ΠΈ поставляСтся с руководствами, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ сторонним ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Xcode β€” это интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Apple, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, систСму управлСния сборкой, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, компилятор C GNU (gcc), конструктор интСрфСйса, AppleScript Studio, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ WebObjects. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² своС распоряТСниС Π΄Π°Π½Π½Ρ‹Π΅ инструмСнты Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ участником Apple Developer Connection (ADC). Но ΠΎΠ½Π»Π°ΠΉΠ½-члСнство являСтся бСсплатным.

Π­Ρ‚ΠΎΡ‚ нСбольшой компилятор C для Linux ΠΈ Windows Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ x86. УтвСрТдаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ собираСт, ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΠ΅Ρ‚ ΠΈ связываСт ΠΊΠΎΠ΄ Π² нСсколько Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ GCC. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ стрСмятся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ соотвСтствиС ISO C99. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†. Он ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ скриптов C (просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Linux shebang ΠΊΠΎΠ΄ #!/usr/local/bin/tcc -run Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку исходного ΠΊΠΎΠ΄Π° Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнялся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ). TCC распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU General Public License.

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов ΠΈ компилятор Objective C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Objective C Π² простой C-ΠΊΠΎΠ΄. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows, Linux, OS / 2, Macintosh ΠΈ Ρ‚. Π΄.

Π­Ρ‚Π° систСма поставляСтся с компилятором GNU C / C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Win32. Она содСрТит собствСнный <windows.h>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ прилоТСния, созданныС с использованиСм этой систСмы, Π±ΡƒΠ΄ΡƒΡ‚ быстрСС, Ρ‡Π΅ΠΌ, Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cygwin32, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ полоТСниями Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU. Mingw32 поставляСтся с инструмСнтами для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (sed, grep), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ парсСров (bison) ΠΈ Ρ‚. Π΄. Mingw32 Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с компилятором рСсурсов Windows.

На страницС компилятора C GNU ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылки Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ исходный ΠΊΠΎΠ΄ для компилятора GNU C. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ссылки Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ вСрсии (MSDOS ΠΈ Win32).

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ компилятор C, основанный Π½Π° LCC (смотритС Ρ‚Π°ΠΊΠΆΠ΅ LCC-Win32). Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор C, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, компилятор рСсурсов, сообщСний, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ make ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Windows ΠΈ Pocket PC.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux / Alpha Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ бСсплатно ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор Compaq, просто Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ приняв Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ΅ соглашСниС. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, коммСрчСских ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ…. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (ladebug), пСрСнСсСнный ΠΈΠ· True64 Unix. Он поставляСтся с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ справочными страницами, Π° Ρ‚Π°ΠΊΠΆΠ΅ справочником ΠΏΠΎ языку ΠΈ руководством программиста.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C / C++, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ стандарт ISO 1990 C (C90), основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C99, классы C++, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ языку Π‘, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, строковый Ρ‚ΠΈΠΏ ΠΈ Ρ‚. Π΄. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСн Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС языка сцСнариСв. Код C / C++ интСрпрСтируСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Π΅Π· компиляции ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Linux, Windows, MacOS X, Solaris ΠΈ HP-UX, созданный Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· этих ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Бтандартная вСрсия бСсплатна для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ, акадСмичСского ΠΈ коммСрчСского использования. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π­Ρ‚ΠΎ систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, основанная Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстном компиляторС C / C++ GNU. Она Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ 32-разрядныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Windows 95. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ систСма с IDE, графичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ парсСров (bison), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка C, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Cilk β€” это язык Π½Π° основС ANSI C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ особСнно эффСктивно для использования динамичСского, высоко асинхронного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² стилС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний. На ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС упоминаСтся, Ρ‡Ρ‚ΠΎ Cilk ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π΅Ρ… ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ³ΠΎ класса: StarTech, Socrates ΠΈ Cilkchess.

Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° сочСтаниС компилятора C ΠΈ ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Β«ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с возмоТностями ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ C, сохраняя ΠΏΡ€ΠΈ этом ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ языка ассСмблСра». Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ .OBJ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ для создания исполняСмого Ρ„Π°ΠΉΠ»Π°. По ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ссылкС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ исходный ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для компилятора. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированный Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС компилятора Cβ€” Sphinx.

Π‘Π°ΠΉΡ‚ этого компилятора написан Π½Π° японском языкС. Он выглядит ΠΊΠ°ΠΊ кросс-компилятор, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ROM. Бтарая вСрсия компилятора (3.30c) прСдоставляСтся бСсплатно. БСсплатная вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° MSDOS.

Π­Ρ‚ΠΎ кросс-компилятор C, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для микропроцСссоров Intel 8051, DS390, Z80, HC08 ΠΈ PIC. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π΄Ρ€ΡƒΠ³ΠΈΡ… 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ОБВО. SDCC поставляСтся с пСрСнастраиваСмым ассСмблСром ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ исходного уровня ΠΈ симулятором. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы со стандартом C99. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для компилятора доступСн ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ Linux, Windows, Mac OS X, Alpha, Sparc ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π­Ρ‚ΠΎ компилятор ANSI C для MSDOS / DPMI ΠΈ Win32, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ срСды выполнСния, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, DOS-Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Π΅ΠΌ (вСрсия MSDOS), IDE (вСрсия Win32) ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ make. Π’Π°ΠΊΠΆΠ΅ доступСн исходный ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости с C99 ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ конструкций C99.

Π­Ρ‚ΠΎΡ‚ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя коммСрчСский компилятор (GNU C / C++), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ исходный ΠΊΠΎΠ΄ компилятора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ опция ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ вас Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄, Ссли Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚Π΅ΡΡŒ со своими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вызываСмая опция, которая Π·Π°Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связи с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, позволяя Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ свои прилоТСния Π±Π΅Π· источников.

Π­Ρ‚ΠΎ компилятор C для Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Он поставляСтся со своим собствСнным ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ компилятором рСсурсов. LCC-Win32 основан Π½Π° компиляторС LCC ΠΈ являСтся бСсплатным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нСкоммСрчСского использования.

LCC β€” это компилятор C (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Alpha, Sparc, MIPS R3000 ΠΈ Intel x86. Он являСтся основой ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ для Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов Win32 C (Ρ‚Π°ΠΊΠΆΠ΅ описанных Π²Ρ‹ΡˆΠ΅).

Cyclone C Π½Π΅ являСтся компилятором ANSI C Π² строгом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, Π° прСдставляСт собой компилятор «бСзопасного Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π°Β» C. Он обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°, связанных с массивами Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚. Π΄. Π’ настоящСС врСмя ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux ΠΈ Windows (Π² послСднСм случаС Ρ‡Π΅Ρ€Π΅Π· Cygwin), для Π½Π΅Π³ΠΎ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС инструмСнтов компиляции GNU.

Π­Ρ‚ΠΎ IDE Π½Π° Π±Π°Π·Π΅ Macintosh, компилятор ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, ANSI C компилятор, компилятор для языка Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ALPHA, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€Π°Ρ„ΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ процСссор ΠΈ Ρ‚. Π΄.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ЦПУ. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. IDE поставляСтся с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ³Ρ€, ΠΊΠ°ΠΊ Tetris, Checkers ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. IDE ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°, поиска процСссов, нСэффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½.

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Turbo C 2.01 для DOS доступСн бСсплатно ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² Borland. Π­Ρ‚ΠΎ Π±Ρ‹Π» популярный компилятор C Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° MSDOS, извСстный своСй быстрой сборкой, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Β«IDEΒ») ΠΈ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ (DOS).

Данная публикация являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Free C/C++ Compilers and InterpretersΒ» , подготовлСнная Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ бСсплатный компилятор для C / C++

C β€” это простой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Он достаточно прост Π² освоСнии. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания любой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

C++ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» создан ΠΊΠ°ΠΊ надмноТСство C. Π―Π·Ρ‹ΠΊΠΈ C ΠΈ C++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых популярных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ бСсплатный компилятор для C / C++ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄ Windows (16-разрядныС, 32-разрядныС ΠΈ 64-разрядныС вСрсии), Linux (32-разрядныС ΠΈ 64-разрядныС вСрсии), OS / 2 ΠΈ MS-DOS (16-разрядныС ΠΈ 32-разрядныС Ρ€Π΅ΠΆΠΈΠΌΡ‹). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Watcom β€” это Π±Ρ‹Π» извСстный коммСрчСский компилятор, ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΈ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ исходный ΠΊΠΎΠ΄ (Π² соотвСтствии с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Sybase Open Watcom).

Для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов Microsoft Visual Studio Community Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Ρ‹Ρ… инструмСнтов ΠΈΠ· коммСрчСских вСрсий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π² своС распоряТСниС IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ Android. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ISO C++ 11, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ISO C++ 14 ΠΈ C++ 17. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя компилятор C ΡƒΠΆΠ΅ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎ устарСл ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ C99.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C#, Visual Basic, F# ΠΈ Python. Π’ Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я писал эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Visual Studio Community 2015 «бСсплатный инструмСнт для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΒ».

Clang β€” компилятор C, C++, Objective C ΠΈ Objective C++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ Apple. Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM. Clang Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стандарты ISO C ΠΈ C++, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C11, ISO C++ 11, C++ 14 ΠΈ частично C++ 1z.

Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² сСмСйствС компиляторов C GNU. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C для Windows Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. К соТалСнию, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ½ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Π²Π°ΠΌ придСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ MinGW-w64 прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторам C ΠΈ C++ GNU для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² систСмС Windows. Π’ случаС MinGW-w64 эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт кросс-компиляторы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Windows ΠΈΠ· систСмы Linux.

Π­Ρ‚ΠΎ вСрсия Π½Π°Π±ΠΎΡ€Π° компиляторов Open64 (описанного Π½ΠΈΠΆΠ΅), которая Π±Ρ‹Π»Π° настроСна для процСссоров AMD ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния ошибок. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C / C++ соотвСтствуСт стандартам ANSI C99 ΠΈ ISO C++ 98, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор Fortran), 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ x86, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° SSE / SSE2 / SSE3, OpenMP 2.5 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, MPICh3 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с распрСдСлСнной ΠΈ раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ; содСрТит ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ, Ρ†ΠΈΠΊΠ»-ΡƒΠ·Π΅Π», ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Набор поставляСтся с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ AMD Core Math Library ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Для этого Π½Π°Π±ΠΎΡ€Π° компиляторов трСбуСтся Linux.

ЯвляСтся бСсплатным компилятором для Windows 7 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Win32, Windows 3.1 (Win16), OS / 2, Netware NLM, MSDOS (16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ) ΠΈ Ρ‚. Π΄. Watcom Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ популярным компилятором нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Sybase Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π»Π° Π΅Π³ΠΎ. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя довольно извСстный STLport (рСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных шаблонов C++). ОбновлСниС: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΡ…ΠΎΠΆΠ΅, застопорился, ΠΈ Π² настоящСС врСмя Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Open Watcom V2 Fork (описан Π²Ρ‹ΡˆΠ΅).

Digital Mars C / C ++ являСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Symantec C++ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Win32, Windows 3.1, MSDOS ΠΈ 32-разрядных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… MSDOS. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ПК Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ процСссора с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (ΠΌΠ°ΡˆΠΈΠ½Ρ‹ pre-Pentium), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ C++ ΠΈΠ· Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ руководства ΠΏΠΎ C++ (ARM) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка AT & T вСрсии 3.0, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° Π²ΠΎ врСмя выполнСния.

Π­Ρ‚ΠΎ графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ уровня исходного ΠΊΠΎΠ΄Π° для X Window, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка C. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько исходных Ρ„Π°ΠΉΠ»ΠΎΠ². МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания исполняСмого Ρ„Π°ΠΉΠ»Π° с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² этом исполняСмом Ρ„Π°ΠΉΠ»Π΅. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ»ΠΈ просто для изучСния языка, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ этот инструмСнт. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Solaris, SunOS, Linux, FreeBSD, BSD / OS ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Unix-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ старый (популярный) компилятор C BDS для систСм CP / M 8080 / Z80? Π’ настоящСС врСмя этот компилятор языка C находится Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ доступС, Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с исходным ΠΊΠΎΠ΄ΠΎΠΌ языка ассСмблСра. ΠŸΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ компилятора с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ руководством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для простой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° 8080/8085 / Z80 для встраиваСмых систСм (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для Π·Π°ΠΌΠ΅Π½Ρ‹ любого ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обращаСтся ΠΊ функциям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы).

Π­Ρ‚ΠΎ интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Win32, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π² сСбя компилятор C++ egcs ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU ΠΈΠ· срСды Mingw32. А Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм компилятора Mingw32 gcc Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows. Он Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ установки для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π² Windows, Ρ‚Π°ΠΊ ΠΈ Π² DOS, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (с подсвСткой синтаксиса ΠΈ автоматичСским Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°). Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Win32 ΠΈ MSDOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Intel ΠΈ Motorola hex (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для встроСнных систСм). Для Π²Ρ‹Π²ΠΎΠ΄Π° MSDOS ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ DOS.

DeSmet C Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° C Π² 1980-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ компилятор C для MSDOS. Он Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL ΠΈ поставляСтся с руководствами, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ сторонним ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Xcode β€” это интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Apple, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, систСму управлСния сборкой, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, компилятор C GNU (gcc), конструктор интСрфСйса, AppleScript Studio, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ WebObjects. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² своС распоряТСниС Π΄Π°Π½Π½Ρ‹Π΅ инструмСнты Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ участником Apple Developer Connection (ADC). Но ΠΎΠ½Π»Π°ΠΉΠ½-члСнство являСтся бСсплатным.

Π­Ρ‚ΠΎΡ‚ нСбольшой компилятор C для Linux ΠΈ Windows Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ x86. УтвСрТдаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ собираСт, ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΠ΅Ρ‚ ΠΈ связываСт ΠΊΠΎΠ΄ Π² нСсколько Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ GCC. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ стрСмятся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ соотвСтствиС ISO C99. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†. Он ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ скриптов C (просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Linux shebang ΠΊΠΎΠ΄ #!/usr/local/bin/tcc -run Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку исходного ΠΊΠΎΠ΄Π° Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнялся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ). TCC распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU General Public License.

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов ΠΈ компилятор Objective C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Objective C Π² простой C-ΠΊΠΎΠ΄. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows, Linux, OS / 2, Macintosh ΠΈ Ρ‚. Π΄.

Π­Ρ‚Π° систСма поставляСтся с компилятором GNU C / C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Win32. Она содСрТит собствСнный <windows.h>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ прилоТСния, созданныС с использованиСм этой систСмы, Π±ΡƒΠ΄ΡƒΡ‚ быстрСС, Ρ‡Π΅ΠΌ, Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cygwin32, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ полоТСниями Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU. Mingw32 поставляСтся с инструмСнтами для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (sed, grep), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ парсСров (bison) ΠΈ Ρ‚. Π΄. Mingw32 Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с компилятором рСсурсов Windows.

На страницС компилятора C GNU ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылки Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ исходный ΠΊΠΎΠ΄ для компилятора GNU C. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ссылки Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ вСрсии (MSDOS ΠΈ Win32).

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ компилятор C, основанный Π½Π° LCC (смотритС Ρ‚Π°ΠΊΠΆΠ΅ LCC-Win32). Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор C, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, компилятор рСсурсов, сообщСний, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ make ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Windows ΠΈ Pocket PC.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux / Alpha Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ бСсплатно ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор Compaq, просто Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ приняв Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ΅ соглашСниС. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, коммСрчСских ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ…. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (ladebug), пСрСнСсСнный ΠΈΠ· True64 Unix. Он поставляСтся с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ справочными страницами, Π° Ρ‚Π°ΠΊΠΆΠ΅ справочником ΠΏΠΎ языку ΠΈ руководством программиста.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C / C++, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ стандарт ISO 1990 C (C90), основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C99, классы C++, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ языку Π‘, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, строковый Ρ‚ΠΈΠΏ ΠΈ Ρ‚. Π΄. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСн Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС языка сцСнариСв. Код C / C++ интСрпрСтируСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Π΅Π· компиляции ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Linux, Windows, MacOS X, Solaris ΠΈ HP-UX, созданный Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· этих ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Бтандартная вСрсия бСсплатна для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ, акадСмичСского ΠΈ коммСрчСского использования. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π­Ρ‚ΠΎ систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, основанная Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстном компиляторС C / C++ GNU. Она Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ 32-разрядныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Windows 95. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ систСма с IDE, графичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ парсСров (bison), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка C, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Cilk β€” это язык Π½Π° основС ANSI C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ особСнно эффСктивно для использования динамичСского, высоко асинхронного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² стилС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний. На ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС упоминаСтся, Ρ‡Ρ‚ΠΎ Cilk ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π΅Ρ… ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ³ΠΎ класса: StarTech, Socrates ΠΈ Cilkchess.

Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° сочСтаниС компилятора C ΠΈ ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Β«ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с возмоТностями ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ C, сохраняя ΠΏΡ€ΠΈ этом ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ языка ассСмблСра». Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ .OBJ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ для создания исполняСмого Ρ„Π°ΠΉΠ»Π°. По ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ссылкС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ исходный ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для компилятора. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированный Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС компилятора Cβ€” Sphinx.

Π‘Π°ΠΉΡ‚ этого компилятора написан Π½Π° японском языкС. Он выглядит ΠΊΠ°ΠΊ кросс-компилятор, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ROM. Бтарая вСрсия компилятора (3.30c) прСдоставляСтся бСсплатно. БСсплатная вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° MSDOS.

Π­Ρ‚ΠΎ кросс-компилятор C, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для микропроцСссоров Intel 8051, DS390, Z80, HC08 ΠΈ PIC. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π΄Ρ€ΡƒΠ³ΠΈΡ… 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ОБВО. SDCC поставляСтся с пСрСнастраиваСмым ассСмблСром ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ исходного уровня ΠΈ симулятором. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы со стандартом C99. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для компилятора доступСн ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ Linux, Windows, Mac OS X, Alpha, Sparc ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π­Ρ‚ΠΎ компилятор ANSI C для MSDOS / DPMI ΠΈ Win32, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ срСды выполнСния, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, DOS-Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Π΅ΠΌ (вСрсия MSDOS), IDE (вСрсия Win32) ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ make. Π’Π°ΠΊΠΆΠ΅ доступСн исходный ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости с C99 ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ конструкций C99.

Π­Ρ‚ΠΎΡ‚ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя коммСрчСский компилятор (GNU C / C++), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ исходный ΠΊΠΎΠ΄ компилятора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ опция ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ вас Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄, Ссли Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚Π΅ΡΡŒ со своими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вызываСмая опция, которая Π·Π°Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связи с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, позволяя Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ свои прилоТСния Π±Π΅Π· источников.

Π­Ρ‚ΠΎ компилятор C для Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Он поставляСтся со своим собствСнным ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ компилятором рСсурсов. LCC-Win32 основан Π½Π° компиляторС LCC ΠΈ являСтся бСсплатным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нСкоммСрчСского использования.

LCC β€” это компилятор C (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Alpha, Sparc, MIPS R3000 ΠΈ Intel x86. Он являСтся основой ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ для Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов Win32 C (Ρ‚Π°ΠΊΠΆΠ΅ описанных Π²Ρ‹ΡˆΠ΅).

Cyclone C Π½Π΅ являСтся компилятором ANSI C Π² строгом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, Π° прСдставляСт собой компилятор «бСзопасного Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π°Β» C. Он обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°, связанных с массивами Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚. Π΄. Π’ настоящСС врСмя ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux ΠΈ Windows (Π² послСднСм случаС Ρ‡Π΅Ρ€Π΅Π· Cygwin), для Π½Π΅Π³ΠΎ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС инструмСнтов компиляции GNU.

Π­Ρ‚ΠΎ IDE Π½Π° Π±Π°Π·Π΅ Macintosh, компилятор ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, ANSI C компилятор, компилятор для языка Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ALPHA, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€Π°Ρ„ΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ процСссор ΠΈ Ρ‚. Π΄.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ЦПУ. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. IDE поставляСтся с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ³Ρ€, ΠΊΠ°ΠΊ Tetris, Checkers ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. IDE ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°, поиска процСссов, нСэффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½.

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Turbo C 2.01 для DOS доступСн бСсплатно ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² Borland. Π­Ρ‚ΠΎ Π±Ρ‹Π» популярный компилятор C Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° MSDOS, извСстный своСй быстрой сборкой, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Β«IDEΒ») ΠΈ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ (DOS).

Данная публикация являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Free C/C++ Compilers and InterpretersΒ» , подготовлСнная Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ бСсплатный компилятор для C / C++

C β€” это простой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Он достаточно прост Π² освоСнии. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания любой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

C++ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» создан ΠΊΠ°ΠΊ надмноТСство C. Π―Π·Ρ‹ΠΊΠΈ C ΠΈ C++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых популярных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ бСсплатный компилятор для C / C++ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄ Windows (16-разрядныС, 32-разрядныС ΠΈ 64-разрядныС вСрсии), Linux (32-разрядныС ΠΈ 64-разрядныС вСрсии), OS / 2 ΠΈ MS-DOS (16-разрядныС ΠΈ 32-разрядныС Ρ€Π΅ΠΆΠΈΠΌΡ‹). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Watcom β€” это Π±Ρ‹Π» извСстный коммСрчСский компилятор, ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΈ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ исходный ΠΊΠΎΠ΄ (Π² соотвСтствии с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Sybase Open Watcom).

Для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов Microsoft Visual Studio Community Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Ρ‹Ρ… инструмСнтов ΠΈΠ· коммСрчСских вСрсий ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π² своС распоряТСниС IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ Android. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ISO C++ 11, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ISO C++ 14 ΠΈ C++ 17. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя компилятор C ΡƒΠΆΠ΅ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎ устарСл ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ C99.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C#, Visual Basic, F# ΠΈ Python. Π’ Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я писал эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Visual Studio Community 2015 «бСсплатный инструмСнт для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдований, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΒ».

Clang β€” компилятор C, C++, Objective C ΠΈ Objective C++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ Apple. Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM. Clang Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стандарты ISO C ΠΈ C++, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C11, ISO C++ 11, C++ 14 ΠΈ частично C++ 1z.

Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² сСмСйствС компиляторов C GNU. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C для Windows Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. К соТалСнию, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ½ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Π²Π°ΠΌ придСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ MinGW-w64 прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторам C ΠΈ C++ GNU для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² систСмС Windows. Π’ случаС MinGW-w64 эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт кросс-компиляторы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Windows ΠΈΠ· систСмы Linux.

Π­Ρ‚ΠΎ вСрсия Π½Π°Π±ΠΎΡ€Π° компиляторов Open64 (описанного Π½ΠΈΠΆΠ΅), которая Π±Ρ‹Π»Π° настроСна для процСссоров AMD ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния ошибок. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C / C++ соотвСтствуСт стандартам ANSI C99 ΠΈ ISO C++ 98, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор Fortran), 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ x86, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° SSE / SSE2 / SSE3, OpenMP 2.5 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, MPICh3 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с распрСдСлСнной ΠΈ раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ; содСрТит ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ, Ρ†ΠΈΠΊΠ»-ΡƒΠ·Π΅Π», ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Набор поставляСтся с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ AMD Core Math Library ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Для этого Π½Π°Π±ΠΎΡ€Π° компиляторов трСбуСтся Linux.

ЯвляСтся бСсплатным компилятором для Windows 7 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Win32, Windows 3.1 (Win16), OS / 2, Netware NLM, MSDOS (16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ) ΠΈ Ρ‚. Π΄. Watcom Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ популярным компилятором нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Sybase Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π»Π° Π΅Π³ΠΎ. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя довольно извСстный STLport (рСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ стандартных шаблонов C++). ОбновлСниС: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΠΎΡ…ΠΎΠΆΠ΅, застопорился, ΠΈ Π² настоящСС врСмя Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Open Watcom V2 Fork (описан Π²Ρ‹ΡˆΠ΅).

Digital Mars C / C ++ являСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Symantec C++ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Win32, Windows 3.1, MSDOS ΠΈ 32-разрядных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… MSDOS. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ПК Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ процСссора с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (ΠΌΠ°ΡˆΠΈΠ½Ρ‹ pre-Pentium), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ C++ ΠΈΠ· Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ руководства ΠΏΠΎ C++ (ARM) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка AT & T вСрсии 3.0, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° Π²ΠΎ врСмя выполнСния.

Π­Ρ‚ΠΎ графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ уровня исходного ΠΊΠΎΠ΄Π° для X Window, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка C. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько исходных Ρ„Π°ΠΉΠ»ΠΎΠ². МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания исполняСмого Ρ„Π°ΠΉΠ»Π° с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² этом исполняСмом Ρ„Π°ΠΉΠ»Π΅. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ»ΠΈ просто для изучСния языка, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ этот инструмСнт. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Solaris, SunOS, Linux, FreeBSD, BSD / OS ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Unix-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ старый (популярный) компилятор C BDS для систСм CP / M 8080 / Z80? Π’ настоящСС врСмя этот компилятор языка C находится Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ доступС, Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с исходным ΠΊΠΎΠ΄ΠΎΠΌ языка ассСмблСра. ΠŸΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ компилятора с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ руководством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для простой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° 8080/8085 / Z80 для встраиваСмых систСм (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для Π·Π°ΠΌΠ΅Π½Ρ‹ любого ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обращаСтся ΠΊ функциям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы).

Π­Ρ‚ΠΎ интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Win32, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π² сСбя компилятор C++ egcs ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU ΠΈΠ· срСды Mingw32. А Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм компилятора Mingw32 gcc Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows. Он Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ установки для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π² Windows, Ρ‚Π°ΠΊ ΠΈ Π² DOS, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (с подсвСткой синтаксиса ΠΈ автоматичСским Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°). Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Win32 ΠΈ MSDOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Intel ΠΈ Motorola hex (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для встроСнных систСм). Для Π²Ρ‹Π²ΠΎΠ΄Π° MSDOS ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ DOS.

DeSmet C Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° C Π² 1980-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ компилятор C для MSDOS. Он Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL ΠΈ поставляСтся с руководствами, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ сторонним ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Xcode β€” это интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Apple, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, систСму управлСния сборкой, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, компилятор C GNU (gcc), конструктор интСрфСйса, AppleScript Studio, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ WebObjects. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² своС распоряТСниС Π΄Π°Π½Π½Ρ‹Π΅ инструмСнты Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ участником Apple Developer Connection (ADC). Но ΠΎΠ½Π»Π°ΠΉΠ½-члСнство являСтся бСсплатным.

Π­Ρ‚ΠΎΡ‚ нСбольшой компилятор C для Linux ΠΈ Windows Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ x86. УтвСрТдаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ собираСт, ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΠ΅Ρ‚ ΠΈ связываСт ΠΊΠΎΠ΄ Π² нСсколько Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ GCC. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ стрСмятся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ соотвСтствиС ISO C99. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†. Он ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ скриптов C (просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Linux shebang ΠΊΠΎΠ΄ #!/usr/local/bin/tcc -run Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку исходного ΠΊΠΎΠ΄Π° Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнялся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ). TCC распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU General Public License.

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов ΠΈ компилятор Objective C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Objective C Π² простой C-ΠΊΠΎΠ΄. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows, Linux, OS / 2, Macintosh ΠΈ Ρ‚. Π΄.

Π­Ρ‚Π° систСма поставляСтся с компилятором GNU C / C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Win32. Она содСрТит собствСнный <windows.h>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ прилоТСния, созданныС с использованиСм этой систСмы, Π±ΡƒΠ΄ΡƒΡ‚ быстрСС, Ρ‡Π΅ΠΌ, Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cygwin32, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ полоТСниями Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU. Mingw32 поставляСтся с инструмСнтами для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (sed, grep), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ парсСров (bison) ΠΈ Ρ‚. Π΄. Mingw32 Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с компилятором рСсурсов Windows.

На страницС компилятора C GNU ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылки Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ исходный ΠΊΠΎΠ΄ для компилятора GNU C. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ссылки Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ вСрсии (MSDOS ΠΈ Win32).

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ компилятор C, основанный Π½Π° LCC (смотритС Ρ‚Π°ΠΊΠΆΠ΅ LCC-Win32). Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя компилятор C, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, компилятор рСсурсов, сообщСний, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ make ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Windows ΠΈ Pocket PC.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux / Alpha Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ бСсплатно ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор Compaq, просто Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ приняв Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ΅ соглашСниС. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, коммСрчСских ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ…. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (ladebug), пСрСнСсСнный ΠΈΠ· True64 Unix. Он поставляСтся с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ справочными страницами, Π° Ρ‚Π°ΠΊΠΆΠ΅ справочником ΠΏΠΎ языку ΠΈ руководством программиста.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C / C++, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ стандарт ISO 1990 C (C90), основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C99, классы C++, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ языку Π‘, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, строковый Ρ‚ΠΈΠΏ ΠΈ Ρ‚. Π΄. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСн Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС языка сцСнариСв. Код C / C++ интСрпрСтируСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Π΅Π· компиляции ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Linux, Windows, MacOS X, Solaris ΠΈ HP-UX, созданный Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· этих ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Бтандартная вСрсия бСсплатна для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ, акадСмичСского ΠΈ коммСрчСского использования. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π­Ρ‚ΠΎ систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, основанная Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстном компиляторС C / C++ GNU. Она Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ 32-разрядныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Windows 95. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ систСма с IDE, графичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ парсСров (bison), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка C, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Cilk β€” это язык Π½Π° основС ANSI C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ особСнно эффСктивно для использования динамичСского, высоко асинхронного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² стилС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний. На ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС упоминаСтся, Ρ‡Ρ‚ΠΎ Cilk ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π΅Ρ… ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ³ΠΎ класса: StarTech, Socrates ΠΈ Cilkchess.

Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° сочСтаниС компилятора C ΠΈ ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Β«ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с возмоТностями ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ C, сохраняя ΠΏΡ€ΠΈ этом ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ языка ассСмблСра». Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ .OBJ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ для создания исполняСмого Ρ„Π°ΠΉΠ»Π°. По ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ссылкС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ исходный ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для компилятора. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированный Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС компилятора Cβ€” Sphinx.

Π‘Π°ΠΉΡ‚ этого компилятора написан Π½Π° японском языкС. Он выглядит ΠΊΠ°ΠΊ кросс-компилятор, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ROM. Бтарая вСрсия компилятора (3.30c) прСдоставляСтся бСсплатно. БСсплатная вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° MSDOS.

Π­Ρ‚ΠΎ кросс-компилятор C, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для микропроцСссоров Intel 8051, DS390, Z80, HC08 ΠΈ PIC. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π΄Ρ€ΡƒΠ³ΠΈΡ… 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ОБВО. SDCC поставляСтся с пСрСнастраиваСмым ассСмблСром ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ исходного уровня ΠΈ симулятором. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы со стандартом C99. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для компилятора доступСн ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ Linux, Windows, Mac OS X, Alpha, Sparc ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π­Ρ‚ΠΎ компилятор ANSI C для MSDOS / DPMI ΠΈ Win32, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ срСды выполнСния, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, DOS-Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Π΅ΠΌ (вСрсия MSDOS), IDE (вСрсия Win32) ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ make. Π’Π°ΠΊΠΆΠ΅ доступСн исходный ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости с C99 ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ конструкций C99.

Π­Ρ‚ΠΎΡ‚ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя коммСрчСский компилятор (GNU C / C++), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ исходный ΠΊΠΎΠ΄ компилятора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ опция ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ вас Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄, Ссли Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚Π΅ΡΡŒ со своими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ вызываСмая опция, которая Π·Π°Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ связи с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, позволяя Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ свои прилоТСния Π±Π΅Π· источников.

Π­Ρ‚ΠΎ компилятор C для Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ графичСский интСрфСйс Win32 ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Он поставляСтся со своим собствСнным ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ компилятором рСсурсов. LCC-Win32 основан Π½Π° компиляторС LCC ΠΈ являСтся бСсплатным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нСкоммСрчСского использования.

LCC β€” это компилятор C (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Alpha, Sparc, MIPS R3000 ΠΈ Intel x86. Он являСтся основой ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ для Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов Win32 C (Ρ‚Π°ΠΊΠΆΠ΅ описанных Π²Ρ‹ΡˆΠ΅).

Cyclone C Π½Π΅ являСтся компилятором ANSI C Π² строгом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, Π° прСдставляСт собой компилятор «бСзопасного Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π°Β» C. Он обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°, связанных с массивами Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚. Π΄. Π’ настоящСС врСмя ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux ΠΈ Windows (Π² послСднСм случаС Ρ‡Π΅Ρ€Π΅Π· Cygwin), для Π½Π΅Π³ΠΎ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС инструмСнтов компиляции GNU.

Π­Ρ‚ΠΎ IDE Π½Π° Π±Π°Π·Π΅ Macintosh, компилятор ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, ANSI C компилятор, компилятор для языка Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ALPHA, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€Π°Ρ„ΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ процСссор ΠΈ Ρ‚. Π΄.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ЦПУ. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. IDE поставляСтся с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ³Ρ€, ΠΊΠ°ΠΊ Tetris, Checkers ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. IDE ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ исходного ΠΊΠΎΠ΄Π°, поиска процСссов, нСэффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½.

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Turbo C 2.01 для DOS доступСн бСсплатно ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² Borland. Π­Ρ‚ΠΎ Π±Ρ‹Π» популярный компилятор C Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° MSDOS, извСстный своСй быстрой сборкой, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Β«IDEΒ») ΠΈ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ (DOS).

Данная публикация являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Free C/C++ Compilers and InterpretersΒ» , подготовлСнная Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C ΠΈ C++

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ компилятор ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ способ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выполняСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ВСорСтичСски любой язык программирования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ компилятором, ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ компиляторами, Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. НапримСр, БСйсик β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π° Π‘ β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ компилятор. Бпособ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся, Π½Π΅ опрСдСляСтся языком программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° написана. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ компиляторы β€” это просто слоТныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ построчно Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ выполняСт инструкции, содСрТащиСся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строкС, ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΊΠΎΠ΄Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ называСтся Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° скомпилирована, Ρ‚ΠΎ сам исходный ΠΊΠΎΠ΄ большС Π½Π΅ влияСт Π½Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всС врСмя для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ БСйсикС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ БСйсика, Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ RUN для запуска. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ построчно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ процСсс Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этому, компилятор ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” это Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ простого Π½Π°Π±ΠΎΡ€Π° ΠΈΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, компиляция ΠΊΠΎΠ΄Π° Π”ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ интСрпрСтация β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”Π²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ, β€” это врСмя компиляции, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт событиям, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌ Π² процСссС компиляции, ΠΈ врСмя выполнСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт событиям, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ обсуТдСнии ошибок Π² Ρ„Ρ€Π°Π·Π°Ρ… «ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции» ΠΈ «ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния».

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Π² c++?



Π― ΠΈΡ‰Ρƒ простой ΠΊΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, написанный Π½Π° языкС c++. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ слоТного, Ρ‡Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с присвоСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (для ΠΊΠΎΠ΄Π° управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ).

Π― Ρ€Π°ΡΡΡƒΠΆΠ΄Π°ΡŽ Ρ‚Π°ΠΊ: я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ соврСмСнным Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ компилятора с Ρ†Π΅Π»ΡŒΡŽ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языковыС Π΄Π²ΠΈΠΆΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π²ΠΈΠΆΠΎΠΊ V8 javascript. Однако Π΄ΠΎ сих ΠΏΠΎΡ€ вСсь ΠΊΠΎΠ΄ этой ΠΊΠ½ΠΈΠ³ΠΈ написан Π½Π° языкС C, ΠΈ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ проСктирования, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для C++ Π² этом контСкстС, особСнно ΠΌΠΎΠ΄Π΅Π»ΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ структуру lexer/parser/etc Π² Ρ†Π΅Π»ΠΎΠΌ.

Π― знаю, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ написано ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π°ΠΊΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ, ΠΈ Ρ‡Ρ‚ΠΎ C++ Π½Π΅ являСтся Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌ языком для написания ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² (особСнно Π² ΠΌΠΈΡ€Π΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ), Π½ΠΎ я надСюсь, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ этим Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΈ ΠΌΠΎΠ³ Π±Ρ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅ Π½Π° свой Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git.

Π― искал Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ, Π½ΠΎ СдинствСнный ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ, слишком слоТСн, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ Π΅Π³ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° этом этапС.

c++ parsing interpreter lexer
ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Neurostracted Β  Β  05 апрСля 2013 Π² 23:12

2 ΠΎΡ‚Π²Π΅Ρ‚Π°


  • C/C++ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ J2ME

    ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ C ΠΈΠ»ΠΈ C++ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²? Π£ мСня Π΅ΡΡ‚ΡŒ Nokia 5310, ΠΈ я нашСл ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ( CellBasic ) ΠΈ Ρ…ΠΎΡ‡Ρƒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² C ΠΈΠ»ΠΈ C++ Π½Π° Ρ…ΠΎΠ΄Ρƒ. Или ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚ схСму J2ME intepreter?

  • Windows Python ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ctrl+C

    Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я использовал, Ctrl+C заставит ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ KeyboardInterrupt ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ. Однако ΠΏΡ€ΠΈ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ установкС Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ctrl+C Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Установка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° signal.SIGINT ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ…



2

Π― ΠΈΡ‰Ρƒ простой ΠΊΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, написанный Π½Π° c++. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ слоТного, Ρ‡Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с присвоСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (для ΠΊΠΎΠ΄Π° управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ).

Π’Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ язык программирования C++?

Π’ Π³Π»Π°Π²Π΅ 6 Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого рСкурсивного парсСра спуска . И Π΄Π°, это Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с присвоСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Evgeny Panasyuk Β  Β  05 апрСля 2013 Π² 23:48



1

LLVM Kaleidoscope tutorial содСрТит ΠΌΠ½ΠΎΠ³ΠΈΠ΅ основы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ понадобятся: ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΠΈΠ΄ΠΈΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ C++-иш лСксика ΠΈ синтаксичСский Π°Π½Π°Π»ΠΈΠ·, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… прСдставлСний ΠΈ Ρ‚. Π΄.

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Ссли Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ настоящий Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ C++, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Boost::Spirit, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², начиная ΠΎΡ‚ простых ΠΎΡ†Π΅Π½Ρ‰ΠΈΠΊΠΎΠ² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ заканчивая слоТными Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°ΠΌΠΈ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ SK-logic Β  Β  10 апрСля 2013 Π² 08:32


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:


Π¦Π΅Π½Π° прСобразования ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π° Cobol Π² соврСмСнный язык?

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ†Π΅Π½Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² прСобразования one-to-one ΠΈΠ· ΠΊΠΎΠ΄Π° Cobol Π² соврСмСнный язык. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… с нСсколькими сотнями тысяч строк ΠΊΠΎΠ΄Π°.


Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ соврСмСнный C++?

Иногда я Ρ‡ΠΈΡ‚Π°ΡŽ Π΄ΠΈΡΠΊΡƒΡΡΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ C++ Ρ…ΠΎΡ€ΠΎΡˆ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ соврСмСнный C++ ΠΎΡ‡Π΅Π½ΡŒ отличаСтся ΠΎΡ‚ старого C++. МнС интСрСсно, Π² Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ…


Бтановится Π»ΠΈ соврСмСнный C++ всС Π±ΠΎΠ»Π΅Π΅ распространСнным?

Когда я Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡƒΠ·Π½Π°Π» C++ 6-7 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΡƒΠ·Π½Π°Π», Π±Ρ‹Π»ΠΎ Π² основном C with Classes. std::vector ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ссли Π±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ…


C/C++ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ J2ME

ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ C ΠΈΠ»ΠΈ C++ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²? Π£ мСня Π΅ΡΡ‚ΡŒ Nokia 5310, ΠΈ я нашСл ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ( CellBasic ) ΠΈ Ρ…ΠΎΡ‡Ρƒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² C ΠΈΠ»ΠΈ C++ Π½Π° Ρ…ΠΎΠ΄Ρƒ. Или…


Windows Python ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ctrl+C

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я использовал, Ctrl+C заставит ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ KeyboardInterrupt ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ. Однако ΠΏΡ€ΠΈ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ установкС Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€…


Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° быстрСС, Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ AST-walking?

Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ понимаю тСхничСскиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС этих Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Ρ†Π΅Π»ΠΎΠΌ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС? Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΊΠ½ΠΈΠ³Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚…


ВстроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C++ для манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² скомпилированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° C++, которая создаСт большой объСм Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² стандартных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… C++. Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C++ ΠΈΠ· ΠΌΠΎΠ΅ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ…


ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΊΠΎΠ΄Π° C++ (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€) Π² ARM assembly

Π― ΠΏΠΈΡˆΡƒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для raspberry pi, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… 70-Ρ… ΠΈ Π½Π°Ρ‡Π°Π»Π° 80-Ρ…. Π― сдСлал основной Π²Π²ΠΎΠ΄ / Π²Ρ‹Π²ΠΎΠ΄ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ assembly ΠΈ…


Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π² C++?

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ простой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для простого языка Π² C++ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» .txt Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ запускаСт Π΅Π³ΠΎ. ** Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для + — / * out Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ** Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (исходный ΠΊΠΎΠ΄)…


Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ пропускаСт Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π² sys.argv

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π² if statement, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт, Π±Ρ‹Π» Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ argv Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρƒ мСня Π΅ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ, Ссли Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½…

Π’Ρ‹Π±ΠΎΡ€ ΠΈ установка ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Python — Visual Studio

  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 3Β ΠΌΠΈΠ½

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ установкС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Python для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Visual StudioΒ 2017 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсий Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСтся PythonΒ 3 (64-разрядная вСрсия).By default, installing the Python development workload in Visual Studio 2017 and later also installs Python 3 (64-bit). ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 32-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ ΠΈ 64-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ вСрсии PythonΒ 2, PythonΒ 3 вмСстС с Miniconda (Visual StudioΒ 2019) ΠΈΠ»ΠΈ AnacondaΒ 2/AnacondaΒ 3 (Visual StudioΒ 2017), ΠΊΠ°ΠΊ описано Π² руководствС ΠΏΠΎ установкС.You can optionally choose to install 32-bit and 64-bit versions of Python 2 and Python 3, along with Miniconda (Visual Studio 2019) or Anaconda 2/Anaconda 3 (Visual Studio 2017), as described in Installation.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ стандартныС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ· Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Add Environment (Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ срСды).Alternately, you can install standard python interpreters from the Add Environment dialog. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Add Environment (Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ срСды) Π² ΠΎΠΊΠ½Π΅ Python Environments (Π‘Ρ€Π΅Π΄Ρ‹ Python) ΠΈΠ»ΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Python, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Python installation (Установка Python), ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ для установки ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Install (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ).Select the Add Environment command in the Python Environments window or the Python toolbar, select the Python installation tab, indicate which interpreters to install, and select Install.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, любой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Visual Studio Installer.You can also manually install any of the interpreters listed in the table below outside of the Visual Studio installer. НапримСр, Ссли Π²Ρ‹ установили Anaconda 3 Π΅Ρ‰Π΅ Π΄ΠΎ установки Visual Studio, Π½Π΅Ρ‚ нСобходимости снова ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ этот дистрибутив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio Installer.For example, if you installed Anaconda 3 before installing Visual Studio, you don’t need to install it again through the Visual Studio installer. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ссли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, доступна новая вСрсия, которая ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ отобраТаСтся Π² установщикС Visual Studio.You can also install an interpreter manually if, for example, a newer version of available that doesn’t yet appear in the Visual Studio installer.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Visual Studio ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Python вСрсии 2.7, Π° Ρ‚Π°ΠΊΠΆΠ΅ 3.5 ΠΈ Π²Ρ‹ΡˆΠ΅.Visual Studio supports Python version 2.7, as well as version 3.5 and greater. Visual Studio ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для рСдактирования ΠΊΠΎΠ΄Π°, написанного Π½Π° языкС Python Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий, Π½ΠΎ эти вСрсии ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ IntelliSense ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.While it is possible to use Visual Studio to edit code written in other versions of Python, those versions are not officially supported and features such as IntelliSense and debugging might not work.

Для Visual Studio 2015 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ².For Visual Studio 2015 and earlier, you must manually install one of the interpreters.

Visual Studio (любой вСрсии) автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ всС установлСнныС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Python ΠΈ окруТСния для Π½ΠΈΡ…, провСряя значСния Π² рССстрС (согласно описанию рСгистрации Python Π² рССстрС Windows 514 PEP).Visual Studio (all versions) automatically detects each installed Python interpreter and its environment by checking the registry according to PEP 514 — Python registration in the Windows registry. Установки Python ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ HKEY_LOCAL_MACHINE\SOFTWARE\Python (32-разрядная вСрсия) ΠΈ HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python (64-разрядная вСрсия), Π·Π°Ρ‚Π΅ΠΌ Π² ΡƒΠ·Π»Π°Ρ… для распрСдСлСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PythonCore (CPython) ΠΈ ContinuumAnalytics (Anaconda).Python installations are typically found under HKEY_LOCAL_MACHINE\SOFTWARE\Python (32-bit) and HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python (64-bit), then within nodes for the distribution such as PythonCore (CPython) and ContinuumAnalytics (Anaconda).

Если Visual Studio Π½Π΅ смоТСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ установлСнноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, см. Ρ€Π°Π·Π΄Π΅Π» Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ окруТСния Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.If Visual Studio does not detect an installed environment, see Manually identify an existing environment.

Visual Studio ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всС извСстныС окруТСния Π² ΠΎΠΊΠ½Π΅ ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡ Python ΠΈ автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ обновлСния для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ².Visual Studio shows all known environments in the Python Environments window, and automatically detects updates to existing interpreters.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€InterpreterDescriptionDescription
CPythonCPythonБобствСнный ΠΈ самый ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ доступСн Π² 32- ΠΈ 64-разрядных вСрсиях (рСкомСндуСтся 32-разрядная).The «native» and most commonly-used interpreter, available in 32-bit and 64-bit versions (32-bit recommended). Он прСдоставляСт послСдниС возмоТности языка, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Python, ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ взаимодСйствиС с IPython.Includes the latest language features, maximum Python package compatibility, full debugging support, and interop with IPython. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ сравнСнии PythonΒ 2 ΠΈ PythonΒ 3.See also: Should I use Python 2 or Python 3?. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Visual StudioΒ 2015 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ PythonΒ 3.6, ΠΈ Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ошибка НСподдСрТиваСмая вСрсия PythonΒ 3.6.Note that Visual Studio 2015 and earlier do not support Python 3.6+ and can give errors like Unsupported python version 3.6. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PythonΒ 3.5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.Use Python 3.5 or earlier instead.
IronPythonIronPythonРСализация .NET для Python (доступна 32- ΠΈ 64-разрядная вСрсия), ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ взаимодСйствиС с C#, F# ΠΈ Visual Basic, доступ ΠΊ API-интСрфСйсам .NET, ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Python (Π½ΠΎ Π½Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π² смСшанном Ρ€Π΅ΠΆΠΈΠΌΠ΅ C++) ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π² смСшанном Ρ€Π΅ΠΆΠΈΠΌΠ΅ IronPython ΠΈ C#.A .NET implementation of Python, available in 32-bit and 64-bit versions, providing C#/F#/Visual Basic interop, access to .NET APIs, standard Python debugging (but not C++ mixed-mode debugging), and mixed IronPython/C# debugging. Однако IronPython Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСды.IronPython, however, does not support virtual environments.
AnacondaAnacondaΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±Π°Π·Π΅ Python, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя послСднюю Π²Π΅Ρ€ΡΠΈΡŽ CPython ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² со слоТной установкой.An open data science platform powered by Python, and includes the latest version of CPython and most of the difficult-to-install packages. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Ссли Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ.We recommend it if you can’t otherwise decide.
PyPyPyPyРСализация JIT для Python с Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ трассировкой, которая Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π΄ΠΎΠ»Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ситуаций, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ удаСтся ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами.A high-performance tracing JIT implementation of Python that’s good for long-running programs and situations where you identify performance issues but cannot find other resolutions. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Visual Studio, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.Works with Visual Studio but with limited support for advanced debugging features.
JythonJythonРСализация Python Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java (JVM).An implementation of Python on the Java Virtual Machine (JVM). Аналогично IronPython, ΠΊΠΎΠ΄, выполняСмый Π² Jython, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с классами ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Java, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для CPython.Similar to IronPython, code running in Jython can interact with Java classes and libraries, but may not be able to use many libraries intended for CPython. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Visual Studio, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.Works with Visual Studio but with limited support for advanced debugging features.

БвСдСния ΠΎ Π½ΠΎΠ²Ρ‹Ρ… способах обнаруТСния срСд Python см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ PTVS Environment Detection (ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ срСды PTVS) Π½Π° сайтС github.com.Developers that want to provide new forms of detection for Python environments, see PTVS Environment Detection (github.com).

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°Move an interpreter

Если Π²Ρ‹ пСрСмСститС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π² Π½ΠΎΠ²ΠΎΠ΅ располоТСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдств Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Visual Studio Π½Π΅ смоТСт ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ автоматичСски.If you move an existing interpreter to a new location using the file system, Visual Studio doesn’t automatically detect the change.

  • Если ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ располоТСниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² ΠΎΠΊΠ½Π΅ ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡ Python, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ располоТСниС, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ окруТСния Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Настройка Π² этом ΠΆΠ΅ ΠΎΠΊΠ½Π΅.If you originally specified the location of the interpreter through the Python Environments window, then edit its environment using the Configure tab in that window to identify the new location. Π‘ΠΌ. Ρ€Π°Π·Π΄Π΅Π» Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ окруТСния Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.See Manually identify an existing environment.

  • Если Π²Ρ‹ установили ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установщика, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия для пСрСустановки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² Π½ΠΎΠ²ΠΎΠΌ располоТСнии:If you installed the interpreter using an installer program, then use the following steps to reinstall the interpreter in the new location:

    1. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python Π² исходноС располоТСниС.Restore the Python interpreter to its original location.
    2. Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установщика, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ очистит записи Π² рССстрС.Uninstall the interpreter using its installer, which clears the registry entries.
    3. УстановитС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π·Π°Π½ΠΎΠ²ΠΎ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ располоТСнии.Reinstall the interpreter at the desired location.
    4. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ Visual Studio ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ располоТСниС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ автоматичСски ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΎ вмСсто старого.Restart Visual Studio, which should auto-detect the new location in place of the old location.

Π’Π°ΠΊΠΎΠΉ процСсс позволяСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² рССстрС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ обновятся записи ΠΎ располоТСнии ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Visual Studio.Following this process ensures that the registry entries that identify the interpreter’s location, which Visual Studio uses, are properly updated. Π’Π°ΠΊΠΆΠ΅ установщик устраняСт всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты.Using an installer also handles any other side effects that may exist.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»See also

БущСствуСт Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка сцСнариСв синтаксиса Ρ‚ΠΈΠΏΠ° C для C ++?

Π― Π΄Π°Π²Π½ΠΎ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ динамичСских Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² , Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ тСстирования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (Π³Ρ€Π°Ρ„Ρ‹ с ΡƒΠ·Π»Π°ΠΌΠΈ ΠΈ Π΄ΡƒΠ³Π°ΠΌΠΈ, Π° Π½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹). Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ тСстирования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарий ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сцСнарий ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π³Ρ€Π°Ρ„ΠΎΠΌ. Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠ·Π»Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… посСщаСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сцСнария, добавляя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ пСрСмСщаСтся ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ.Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сцСнарии Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для добавлСния сторонних Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΌΠΎΠ³ Π±Ρ‹ Π»ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступными Π² Π²ΠΈΠ΄Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сцСнариСв Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π»ΠΈΠ±ΠΎ просто ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C ++ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ протСстированы ΠΈ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

ВсС ΠΌΠΎΠΈ поиски ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° для встраивания Π² мою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ мСня ΠΊ lua; Π·Π°Ρ‚Π΅ΠΌ я Π½Π°Ρ‡Π°Π» ΠΏΠΈΡΠ°Ρ‚ΡŒ свой собствСнный рСкурсивный Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ спуска для ΠΌΠΎΠ΅Π³ΠΎ собствСнного языка сцСнариСв синтаксиса, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ C (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подмноТСство Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ C ++, Ρ‡Ρ‚ΠΎΠ±Ρ‹ любой ΠΊΠΎΠ΄, написанный Π½Π° ΠΌΠΎΠ΅ΠΌ языкС сцСнариСв, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² любой ΠΊΠΎΠ΄ C ++.Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° интСрСсная бСзумная идСя, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я нисколько Π½Π΅ ТалСю, Ρƒ мСня Π΅ΡΡ‚ΡŒ области видимости, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ†ΠΈΠΊΠ»Ρ‹, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, выраТСния.

Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° я ΠΏΠΎΠ΄Ρ…ΠΎΠΆΡƒ ΠΊ добавлСнию классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² классов, наслСдования (для взаимодСйствия скриптов с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ классы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), я понял, Ρ‡Ρ‚ΠΎ это Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠžΠ§Π•ΠΠ¬ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий. Π­Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ‚ΠΎ для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ студСнта с экзамСнами, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡβ€¦ Π½ΠΎ всС ΠΆΠ΅ я Ρ…ΠΎΡ‡Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипты Π±Ρ‹Π»ΠΈ Π½Π° 100% совмСстимы с C ++, Π±Ρ‹Π»ΠΎ практичСски Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ просто малСнькой приятной Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‰ΡŒΡŽ, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я ΠΌΠΎΠ³Ρƒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вопрос Π² Ρ‚ΠΎΠΌ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° lua с синтаксисом Ρ‚ΠΈΠΏΠ° c, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ я ΡƒΠΆΠ΅ сдСлал, плюс классы ΠΈ наслСдованиС? (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… «классов», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ интСрфСйсными скриптами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ)

(я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ установлСн ΠΏΠΎΠ»Π½Ρ‹ΠΉ компилятор C ++, поэтому я Π½Π΅ ΠΌΠΎΠ³Ρƒ просто ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… «ΡΠΊΡ€ΠΈΠΏΡ‚» Π²ΠΎ врСмя выполнСния ΠΊΠ°ΠΊ dll для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π°, хотя я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ³)

c ++ — Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C?

Как ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, C — это ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык.Богласно языку C ВикипСдия Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ:

Он Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для компиляции с использованиСм ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простого компилятора, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ доступ ΠΊ памяти, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ языковыС конструкции, эффСктивно ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции, ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ минимальной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²ΠΎ врСмя выполнСния. Π’ Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ говорится, Ρ‡Ρ‚ΠΎ ΠΏΠΎ своСй конструкции C прСдоставляСт конструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ эффСктивно ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции, ΠΈ поэтому ΠΎΠ½ нашСл ΠΏΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ написаны Π½Π° языкС ассСмблСра, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², начиная ΠΎΡ‚ ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ для встраиваСмых систСм.

Но ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» это ΠΈ согласно Thinking in C ++ 2 Π‘Ρ€ΡŽΡΠ° ЭккСля , ΠΎΠ½ сказал, Ρ‡Ρ‚ΠΎ Π² Π³Π»Π°Π²Π΅ 2 ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Iostreams : (Π― пропустил Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части)

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ камСнь прСткновСния — это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ списка с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваша строка Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²ΠΎ врСмя выполнСния ΠΈ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ· список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ интСрпрСтация происходит Π²ΠΎ врСмя выполнСния, Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ.Π­Ρ‚ΠΎ расстраиваСт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС информация присутствуСт Π² строкС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²ΠΎ врСмя компиляции, Π½ΠΎ это Π½Π΅ оцСниваСтся Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Однако, Ссли Π±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² строкС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²ΠΎ врСмя компиляции Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΆΠ΅ΡΡ‚ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ врСмя выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (хотя сСмСйство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ printf () ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½).

эта ссылка Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ:

  • Π‘ΠΎΠ»Π΅Π΅ бСзопасный Ρ‚ΠΈΠΏ: с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° являСтся статичСски извСстно компилятору.Напротив, cstdio ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ «%» поля для динамичСского опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ².

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ это, я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ языкС, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ C, Π½ΠΎ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Ρ‚Π°ΠΊΠΆΠ΅ доступСн Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C? Π― ошибался Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»? НСуТСли для этой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Iostreams?

НаписаниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° — Π² C

Π“Π΄Π΅-Ρ‚ΠΎ Π² 2016 Π³ΠΎΠ΄Ρƒ ΠΌΠ½Π΅ Π² Ρ€ΡƒΠΊΠΈ попалась ΠΊΠ½ΠΈΠ³Π° ВорстСна Π‘ΠΎΠ»Π»Π° «НаписаниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² Π³ΠΎΒ».Π― пролистал ΠΏΠ΅Ρ€Π²Ρ‹Π΅ нСсколько Π³Π»Π°Π², ΠΌΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π», Π° потом… Тизнь слоТилась, ΠΈ я Ρ‚Π°ΠΊ ΠΈ Π½Π΅ додумался Π΄ΠΎ создания ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°. πŸ™

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ мСсяца. Π― очистил своС расписаниС ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ.

Для Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ я Π²Ρ‹Π±Ρ€Π°Π» C Π² качСствС языка программирования вмСсто Go. Π­Ρ‚ΠΎ оказалось ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ заставило мСня ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСгда ΠΈΠΌΠ΅Ρ‚ΡŒ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ авторский ΠΊΠΎΠ΄.

Π― Π½Π°Π·Π²Π°Π» свою Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Monkey-C Monkey-Do.

Книга ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас Ρ‡Π΅Ρ€Π΅Π· всС этапы создания ΠΈ запуска ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° языка программирования Monkey:

  • ВокСнизация Π²Π²ΠΎΠ΄Π°
  • Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π² абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (AST)
  • ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ

Π­Ρ‚ΠΎΠΌΡƒ ΠΎΡ†Π΅Π½Ρ‰ΠΈΠΊΡƒ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π΅Ρ€Π΅Π²Π° трСбуСтся ΠΎΠΊΠΎΠ»ΠΎ 6 сСкунд для вычислСния 35-Π³ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с использованиСм ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с большим количСством рСкурсии.Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΎ ΠΈ Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· соврСмСнных ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ уровня.

Для сравнСния, Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ машинС Python 3.7 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 2,3 сСкунды для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π° ΡƒΠ·Π»Ρƒ 15 трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹Π΅ 200 миллисСкунд (ΠΈΠ·-Π·Π° Π΅Π³ΠΎ JIT-компиляции).

МоТСм Π»ΠΈ ΠΌΡ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ нСпосрСдствСнно ΠΊ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ?

НаписаниС компилятора Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π°Π²Ρ‚ΠΎΡ€ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° этом Π½Π΅ остановился.Π’ своСй Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ (НаписаниС компилятора Π½Π° Go) Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас ΠΏΠΎ этапам создания ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС AST ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ компилятор, выводящий Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ этот Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

ПослС запуска Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ вычислСниС 35-Π³ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго 0,82 сСкунды. Π­Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ быстрСС, Ρ‡Π΅ΠΌ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках.

Π― искрСннС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ эти Π΄Π²Π΅ ΠΊΠ½ΠΈΠ³ΠΈ. Мало Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ — это ΠΎΡ‡Π΅Π½ΡŒ вСсСло, это Ρ‚Π°ΠΊΠΆΠ΅ прояснило для мСня ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²Π°, связанного с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ‡Ρ‚ΠΎ происходит Π·Π° кулисами, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° оцСниваСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C

Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ программирования Π½Π° C, ΠΈ я удивился, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ², Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нравится Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Из-Π·Π° нСбольшой спСцификации языка Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΡˆΠ»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

НСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ я нСсколько Ρ€Π°Π· Π½Π΅ прострСлил сСбС Π½ΠΎΠ³Ρƒ ΠΈ Π½Π΅ боролся с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Однако использованиС C Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΡ€Π΅ΠΏΠΈΠ»ΠΎ ΠΌΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языков, ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ послС Π½Π΅Π³ΠΎ. И ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ C.

ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ оснащСнии я ΠΎΡ‡Π΅Π½ΡŒ полюбил C… Извини, Π½Π΅ соТалСю.

РСсурсы

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ MIR C ΠΈ JIT-компилятор

ПослСдниС Π΄Π²Π° Π³ΠΎΠ΄Π° я Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ компилятор Just-in-Time (JIT), извСстный ΠΊΠ°ΠΊ MIR.ΠšΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся машинно-нСзависимоС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС срСднСго уровня (MIR).

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° состоит ΠΈΠ· ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ C Π² MIR. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ MIR ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, я Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ» этот компилятор C-to-MIR Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C ΠΈ компилятор JIT.

Π― Ρ€Π°Π½Π΅Π΅ писал ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… частях ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MIR (см. MIR: ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ JIT-компилятора , Π½ΠΎ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ писал ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ компиляторС C-to-MIR, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ C ΠΈΠ»ΠΈ JIT.Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эти упущСния.

ΠœΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ для компилятора C-to-MIR

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ MIR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ нСдостатки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ CRuby JIT, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ MIR для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора Ruby JIT, ΠΌΠ½Π΅ понадобился компилятор C-to-MIR. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ruby, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° C, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π² MIR ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ встроСны Π² ΠΊΠΎΠ΄ MIR, созданный ΠΈΠ· Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Ruby. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ воврСмя ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π•ΡΡ‚ΡŒ нСсколько способов Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор C-to-MIR. Π― ΠΌΠΎΠ³ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор LLVM IR-to-MIR ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ GCC, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° MIR. Но это создало Π±Ρ‹ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ внСшнСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ нСпростая Π·Π°Π΄Π°Ρ‡Π°, ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° тСхничСскоС обслуТиваниС.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди довольно быстро написали нСбольшиС компиляторы Π‘ΠΈ. Π—Π΄Π΅ΡΡŒ я ΠΌΠΎΠ³Ρƒ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ компиляторов lacc, 8cc ΠΈ 9cc.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ язык C Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компилятор C-to-MIR Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСкулятивный ΠΈ Π΄Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² зависимости ΠΎΡ‚ профиля выполнСния.НапримСр, ΠΊΠΎΠ΄ C, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ плюс Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ CRuby для Ρ†Π΅Π»Ρ‹Ρ… чисСл, провСряСт Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Он Ρ‚Π°ΠΊΠΆΠ΅ провСряСт, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ плюс для Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π΅ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ пСрСполнСния, Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ числа с Ρ€Π°Π·Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ‚. Π”. ВсС эти ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Π³ΠΎΠ²ΠΎΡ€ΡŽ.

Π’Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для GCC ΠΈΠ»ΠΈ Clang, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GCC ΠΈΠ»ΠΈ Clang ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… Π½Π° сторонС.

Π˜Ρ‚Π°ΠΊ, я Ρ€Π΅ΡˆΠΈΠ» сначала Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой собствСнный компилятор C-to-MIR. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ стандарт C11 Π±Π΅Π· Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ массивы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, комплСксныС числа ΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Основной Ρ†Π΅Π»ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»Π° простота , Π° Π½Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй ΠΈ сниТаСт усилия, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C ΠΈ JIT

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C-to-MIR ΠΈΠΌΠ΅Π΅Ρ‚ интСрфСйс API, ΠΈ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.MIR, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈ JIT. Π‘ΠΊΠ»Π΅ΠΈΠ² вСсь этот ΠΊΠΎΠ΄, ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C ΠΈ JIT. МнС Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€.

ОбъСдинСниС компилятора C-to-MIR, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° MIR ΠΈ JIT с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ созданию исполняСмого Ρ„Π°ΠΉΠ»Π° c2m , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C ΠΈ JIT.

Как MIR, JIT Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ x86-64, aarch64, ppc64 (big and little endian) ΠΈ s390x Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€. c2m Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° этих Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ….

ΠžΠΏΡ†ΠΈΠΈ

c2m Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ опциям cc : -E , -c , -S , -o , -I include_dir , -D макрос [= Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ] , -U макрос , -L ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³_Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ -l dynamic_library .

ВмСсто ΠΊΠΎΠ΄Π° ассСмблСра c2m Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ тСкстовоС прСдставлСниС MIR.НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°

 c2m -S file1.c file2.c
 

создаСт тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ MIR file1.mir ΠΈ file2.mir .

ВмСсто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² c2m Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС MIR. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°

 c2m -c file1.c file2.c
 

создаСт Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ MIR file1.bmir ΠΈ file2.bmir .

ВмСсто исполняСмого Ρ„Π°ΠΉΠ»Π° c2m создаСт связанный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» MIR.НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°

 c2m file1.c file2.c
 

создаСт ΠΎΠ΄ΠΈΠ½ связанный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» MIR, a.bmir (имя ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -o ).

Аналогично использованию cc Π² ассСмблСрных ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСкстовыС ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ MIR Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС c2m , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 c2m file1.mir file2.bmir
 

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт связанный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» MIR, a.bmir .

Для c2m Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -ei . НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π°

 c2m echo.c -ei 1 2 ΠŸΡ€ΠΈΠ²Π΅Ρ‚
 

ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ echo.c (которая Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ) Π² MIR, ΠΈ MIR Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки послС -ei Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ( argc ΠΈ argv ).

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² MIR JIT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, :

 c2m эхо.c -eg 1 2 ΠŸΡ€ΠΈΠ²Π΅Ρ‚
 

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -el Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π»Π΅Π½ΠΈΠ²ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ JIT. c2m Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° функция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·:

 c2m echo.c -el 1 2 ΠŸΡ€ΠΈΠ²Π΅Ρ‚
 

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ компилятор MIR JIT ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ MIR ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -dg . Однако Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ свСдСния компилятора C-to-MIR

Как я писал Ρ€Π°Π½Π΅Π΅, основной Ρ†Π΅Π»ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора C-to-MIR Π±Ρ‹Π»Π° простота.ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ простоты, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° нСбольшиС управляСмыС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. БущСствуСт Π΄Π°ΠΆΠ΅ ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ компилятора с Π½Π°Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для изучСния Ρ‚Π΅ΠΌ ΠΎ компиляторах Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ.

Мой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора C — это классичСскоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: прСпроцСссор, синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, срСдство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ контСкста ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ MIR, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 1.

Рисунок 1. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ MIR ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа.

Π― Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ для компилятора Π½ΠΈΠΊΠ°ΠΊΠΈΡ… инструмСнтов Π²Ρ€ΠΎΠ΄Π΅ YACC.Π₯отя стандартная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ANSI C Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Π°, я Π½Π΅ измСняю Π΅Π΅. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° (PEG), Ρ€ΡƒΡ‡Π½ΠΎΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ с Ρ€Π΅Π΄ΠΊΠΈΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ. Он простой ΠΈ малСнький, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ парсСры.

Випичная JIT, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java, выполняСтся Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°. Π― Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» компиляторы MIR JIT ΠΈ C-to-MIR для использования Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ c2m ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ C.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ для c2m , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΡ†ΠΈΡŽ -p . НапримСр, Π² этом Π²Ρ‹Π·ΠΎΠ²Π΅

 c2m -p4 file1.c file2.c file3.c file4.c -eg  Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  

c2m сначала создаст Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π­Ρ‚ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ исходных Ρ„Π°ΠΉΠ»Π°. ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π±Ρ€Π°Ρ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ исходных Ρ„Π°ΠΉΠ»ΠΎΠ² для создания ΠΊΠΎΠ΄Π° MIR.

ПослС компиляции ΠΈ связывания сгСнСрированного ΠΊΠΎΠ΄Π° MIR Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнят ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ машинного ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MIR.Аналогично, эти Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π±Π΅Ρ€ΡƒΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MIR ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MIR. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. На рисункС 2 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° c2m .

Рисунок 2: ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ компиляции ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ машинного ΠΊΠΎΠ΄Π°.

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° C ΠΈ JIT

Π’ основном Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ компилятор C-to-MIR. Он ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 1000 тСстов ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов C.

Около Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ я достиг Π²Π°ΠΆΠ½ΠΎΠΉ Π²Π΅Ρ…ΠΈ: ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. c2m ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ собствСнныС исходники ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» MIR. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° MIR снова ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ источники c2m ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» MIR. Π”Π²Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π° MIR ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹:

 cc -O3 -fno-tree-sra -std = gnu11 -Dx86_64 -I. mir-gen.c c2mir.c c2mir-driver.c mir.c -ldl -o c2m
  ./c2m -Dx86_64 -I. mir-gen.c c2mir.c c2mir-driver.c mir.c -o 1.bmir
  ./c2m 1.bmir -el -Dx86_64 -I. mir-gen.c c2mir.c c2mir-driver.c mir.c -o 2.bmir
 

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MIR, круговая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π° рисункС 3 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ строки ΠΊΠΎΠ΄Π° Π²ΠΎ всСх источниках c2m , ΠΊΠ°ΠΊ сообщаСт sloccount.

Рисунок 3: Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ исходного ΠΊΠΎΠ΄Π° Π² основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… c2m.

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ABI

C ABI (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс прилоТСния) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно слоТным. НапримСр, Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… C ABI Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» нСбольшиС структуры ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² рСгистры (см., НапримСр, aarch64 ABI ΠΈΠ»ΠΈ s390x ABI) ΠΈΠ»ΠΈ частично Π² рСгистрах (см., НапримСр, ppc64 BE ABI ΠΈ ppc64 LE ABI), ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ части структур Π² Ρ€Π°Π·Π½Ρ‹Π΅ классы рСгистров, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ цСлочислСнныС ΠΈΠ»ΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² x86-64 ABI).

Полная рСализация C ABI — нСпростая Π·Π°Π΄Π°Ρ‡Π°. НСкоторыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ C ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ABI с ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ long double для Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ABI. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор C-to-MIR Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, сгСнСрированным GCC / Clang для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JIT Π² Ruby, полная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ABI являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² MRuby прСдставлСно нСбольшой структурой C.

Π― ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия Π½Π° Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ C ABI для Π΅Π³ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ†Π΅Π»Π΅ΠΉ. Помимо ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° C-to-MIR, рСализация ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ MIR.Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ†Π΅Π»ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ABI Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ компилятора MIR C с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ компиляторами C

БущСствуСт мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ C. Для сравнСния с ΠΌΠΎΠ΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ C я Π²Ρ‹Π±Ρ€Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы C:

  • GCC вСрсии 10.2.1. Π­Ρ‚ΠΎΡ‚ компилятор ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ являСтся самым ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ компилятором C.
  • Clang вСрсии 10.0.1. Π­Ρ‚ΠΎ популярный ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΉ компилятор C с соврСмСнным Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ мноТСство Ρ†Π΅Π»Π΅ΠΉ.
  • PCC вСрсии 1.2.0.DEVEL. Π­Ρ‚ΠΎ соврСмСнная вСрсия компилятора Portable C, выпущСнная ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎ (1979 Π³.). Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ C11 Π½Π° мноТСствС Ρ†Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ x86_64, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ устарСли.
  • TCC вСрсии 0.9.27. ΠšΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ компилятор C11 — это Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ компилятор со своим собствСнным ассСмблСром ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ i386 / x86-64, arm, arm64 ΠΈ riscv64.
  • Cproc. РСализация C11 Майкла Π€ΠΎΡ€Π½ΠΈ основана Π½Π° сСрвСрной части компилятора QBE.QBE ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈ-LLVM с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ IR ΠΈ нСбольшим ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ SSA. QBE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ x86-64 ΠΈ двиТСтся ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ arm64. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Cproc ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для сравнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ MIR-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ QBE, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹Ρ… JIT-компиляторов.
  • cparser. Π­Ρ‚ΠΎ рСализация C99, основанная Π½Π° довольно слоТном бэкэндС, libFirm вСрсии 1.22. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° i386 / x86-64 ΠΈ 32-разрядныС arm, mips, riscv ΠΈ sparc.
  • lacc. Π­Ρ‚ΠΎ рСализация C89, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ x86_64.
  • Chibicc. ПослСдняя рСализация Π ΡƒΠΉ Уэямы C11 для ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ; Π½Π°Ρ†Π΅Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° x86_64.

Π― Ρ‚Π°ΠΊΠΆΠ΅ попытался ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы C:

  • SCC. К соТалСнию, Π² ΠΌΠΎΠΈΡ… тСстах ΠΎΠ½ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΈΠ·-Π·Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ошибки компилятора.
  • LCC. Π­Ρ‚ΠΎΡ‚ старый компилятор C описан Π² ΠΊΠ½ΠΈΠ³Π΅ A Retargetable C Compiler: Design and Implementation (Addison-Wesley, 1995). Π― ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΠ» Π΅Π³ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ x86-64.
  • 8cc ΠΈ 9cc.Π­Ρ‚ΠΈ компиляторы слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ, вСроятно, Π½Π΅Ρ‚ смысла ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Chibicc являСтся ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… развития.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сгСнСрированного ΠΊΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, сгСнСрированного компиляторами, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π½Π°Π±ΠΎΡ€ ΠΈΠ· 14 тСстов, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… взяты ΠΈΠ· сСрии старых ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков. Π― Π²Ρ‹Π±Ρ€Π°Π» эти ΠΌΠΈΠΊΡ€ΠΎ-тСсты, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ тСсты для всСх компиляторов ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Мой ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ подсказываСт ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ тСст Π²Ρ‹ Π½ΠΈ использовали, люди всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ вас Π·Π° Π²Ρ‹Π±ΠΎΡ€.Π£ мСня Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅: Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Π΅ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ.

На рисункС 4 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ срСдниС ΠΈ гСомСтричСскиС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ скорости (ΠΏΡƒΡ‚Π΅ΠΌ измСрСния процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) сгСнСрированного ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ компилятора Π½Π° i9-10900 ΠΏΠΎΠ΄ Fedora Core 32. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ — это ΠΊΠΎΠ΄, сгСнСрированный GCC с -O2 . Для c2m врСмя выполнСния Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ компилятора C-to-MIR ΠΈ JIT, Π½ΠΎ эта Ρ€Π°Π±ΠΎΡ‚Π° являСтся нСбольшой Ρ‡Π°ΡΡ‚ΡŒΡŽ всСго выполнСния. Π― запускал ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ тСст ΠΏΠΎ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π» Π»ΡƒΡ‡ΡˆΠ΅Π΅ врСмя.

Рисунок 4: ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ компиляторами, протСстированными Π½Π° процСссорС Intel i9.

Π›ΡŽΠ΄ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒΡŽΡ‚ мСня Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Ρ€Π΅Π΄ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ процСссоры AMD. На рисункС 5 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстов Π½Π° AMD Ryzen 7 3800x, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² основном ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

Рисунок 5: ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ компиляторами, протСстированными Π½Π° процСссорС AMD.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ массовой компиляции

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ массовой компиляции, я скомпилировал исходный ΠΊΠΎΠ΄ bzip2 ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ».Π’ Ρ„Π°ΠΉΠ»Π΅ ΠΎΠΊΠΎΠ»ΠΎ 6500 строк ΠΊΠΎΠ΄Π° C. Π― использовал c2m Π² Π½Π΅ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ для создания Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° MIR. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, я Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» исходный Ρ„Π°ΠΉΠ» ΠΈ Π²Ρ‹Π±Ρ€Π°Π» Π»ΡƒΡ‡ΡˆΠ΅Π΅ врСмя. На рисункС 6 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции компиляторов ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скорости gcc -O2 .

Рисунок 6: ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ массовой компиляции.

Различия Π² скорости довольно Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, поэтому ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅. ΠšΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ компилятор C ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ нСвСроятной ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. Если Π±Ρ‹ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π» Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠ΄, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ JIT-компилятор с языком C Π² качСствС интСрфСйса.

Помимо скорости массовой компиляции, врСмя запуска компилятора ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ для JIT-компиляторов динамичСских языков программирования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ своСврСмСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ довольно ΠΌΠ°Π»Ρ‹. GCC ΠΈ Clang — Ρ…ΡƒΠ΄ΡˆΠΈΠ΅ исполнитСли здСсь. Если Π²Π°ΠΌ интСрСсна эта Ρ‚Π΅ΠΌΠ°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ мою ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ JIT-компилятора.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° компилятора

Различия Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° компилятора Π΅Ρ‰Π΅ большС. Π‘Π°ΠΌΡ‹ΠΉ малСнький компилятор (Chibicc) ΠΏΠΎΡ‡Ρ‚ΠΈ Π² 1000 Ρ€Π°Π· мСньшС самого большого (Clang), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 7.

Рисунок 7: ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° самих компиляторов.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторах Π΅ΡΡ‚ΡŒ огромная сСкция bss (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Cproc ΠΎΠ½Π° составляСт 17 ΠœΠ‘). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для расчСта Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² я использовал Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° тСкста ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π― использовал GCC ΠΈ Clang ΠΈΠ· дистрибутива Fedora Core 32. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ компиляторы я построил с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ выпуска).

Для GCC я взял исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ gcc ΠΈ cc1 . Для Clang я использовал clang ΠΈ Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libclang-cpp ΠΈ libLLVM .Для PCC я использовал Π΅Π³ΠΎ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ cc , ccom ΠΈ cpp . Для Cproc я использовал cproc , cproc-qbe ΠΈ qbe . ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ компиляторы состоят ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°.

ΠŸΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ компилятора C-to-MIR

Мой краткосрочный ΠΏΠ»Π°Π½ — ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MIR, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ компилятор C-to-MIR, Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° 2021 Π³ΠΎΠ΄Π°.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… выпусках я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»:

  • Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции C-to-MIR
  • Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сгСнСрированный ΠΊΠΎΠ΄ C-to-MIR
  • ΠŸΠΎΡ€Ρ‚ MIR для большСго количСства Ρ†Π΅Π»Π΅ΠΉ (64-Π±ΠΈΡ‚Π½Ρ‹Π΅ riscv ΠΈ mips64 Linux ΠΈ Apple M1 macOS)
  • РСализация Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ спСкуляции / Π΄Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° уровнях C ΠΈ MIR

Π₯отя ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции C-to-MIR Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»Π° Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ, Π΅Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ конкурСнтоспособна с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ компиляторами C.Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык C вмСсто MIR для своих Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ JIT. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости компиляции C-to-MIR Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΡΡ‚Π°Π²Π»ΡŽ это Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто.

МСня ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ компилятор C, Π° Π½Π΅ JIT. НаписаниС компилятора Π½Π΅ являСтся слоТной ΠΈΠ»ΠΈ большой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ассСмблСр. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ компилятор, Π½Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ассСмблСра вмСсто Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ машинного ΠΊΠΎΠ΄Π°. Однако, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, потрСбуСтся Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠ°Ρ€Π»ΠΈΠΊΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅) ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ-нСзависимый ΠΊΠΎΠ΄ (PIC) для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C JIT, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ MIR, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ конкурСнтоспособный сгСнСрированный ΠΊΠΎΠ΄ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для написания сцСнариСв Π½Π° C ΠΈ Π² качСствС JIT-компилятора для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования. НадСюсь, Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… цСлях.

БвязанныС

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ? — ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π’Π΅Ρ…ΠΎΠΏΠ΅Π΄ΠΈΠΈ

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ?

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ — это ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для нСпосрСдствСнного выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… инструкций, написанных с использованиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… языков программирования высокого уровня.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ выполняСт, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ высокоуровнСвый исходный ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‡Ρ‚ΠΎ выполняСтся построчно ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

ВСхопСдия ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π›ΡŽΠ΄ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ языки высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… языках, поэтому трСбуСтся Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π»ΠΈΠ±ΠΎ компилятор.

Π―Π·Ρ‹ΠΊΠΈ программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ двумя способами: интСрпрСтация ΠΈ компиляция. Как слСдуСт ΠΈΠ· названия, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ высокого уровня Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ понят машиной (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄), ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ считываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ выполняСт Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Напротив, ассСмблСр ΠΈΠ»ΠΈ компилятор ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ высокого уровня Π² собствСнный (скомпилированный) ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСпосрСдствСнно ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. создав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ .exe).

И компиляторы, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ свои прСимущСства ΠΈ нСдостатки ΠΈ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°; это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСстС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языков высокого уровня.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв компилятор ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ выполняСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ построчной ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΅ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ компилятор, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ инструкции Π·Π° Ρ€Π°Π·.

Π₯отя врСмя Π°Π½Π°Π»ΠΈΠ·Π° исходного ΠΊΠΎΠ΄Π° сокращаСтся, особСнно большого, врСмя выполнСния для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС, Ρ‡Π΅ΠΌ для компилятора. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊΠΎ всСму, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ интСрпрСтация выполняСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² сСрСдинС выполнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся большС памяти для связывания, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивно.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ считываСт ΠΈ Π·Π°Ρ‚Π΅ΠΌ выполняСт ΠΊΠΎΠ΄ Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для написания сцСнариСв ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся Π½Π° Π²Π΅Π±-сСрвСрах, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся мноТСство исполняСмых сцСнариСв. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для тСстирования Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ исходный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ построчно Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ особСнно цСнится Π² цСлях ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ распознавания ошибок.ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… цСлях, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ студСнтам, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ Π·Π° Ρ€Π°Π·.

Π―Π·Ρ‹ΠΊΠΈ программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Python, Ruby ΠΈ JavaScript, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ языки программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Java, C ++ ΠΈ C.

бСсплатных компиляторов ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² C / C ++ (thefreecountry.com)

C — это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ довольно Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΌ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для запоминания), Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, достаточно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания любого Π²ΠΈΠ΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ†Π΅Π»Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Linux.C ++ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создавался ΠΊΠ°ΠΊ надмноТСство C (хотя Π² настоящСС врСмя Π΄Π²Π° языка Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… направлСниях, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это ΡƒΠΆΠ΅ Π½Π΅ совсСм Ρ‚Π°ΠΊ). Π­Ρ‚ΠΈ Π΄Π²Π° языка программирования, C ΠΈ C ++, вСроятно, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых популярных языков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

На этой страницС пСрСчислСны многочислСнныС бСсплатныС компиляторы C ΠΈ C ++, кросс-компиляторы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ для самых Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π½Π° ПК, Mac ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ….

БообщСство Microsoft Visual Studio

Для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программиста ΠΈΠ»ΠΈ программиста-Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρ сообщСство Microsoft Visual Studio, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ инструмСнты Π΅Π³ΠΎ коммСрчСских ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ΅Π². ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ список сравнСниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ профилирования. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ вСрсии Windows, Π° Ρ‚Π°ΠΊΠΆΠ΅ Android.ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C ++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ISO C ++ 11 ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· C ++ 14 ΠΈ C ++ 17. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ISO C11 ΠΈ C17 (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ поэтому ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ C99), хотя, Π² зависимости ΠΎΡ‚ Π΄Π°Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ эту запись, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠŸΠ°ΠΊΠ΅Ρ‚ SDK для Windows Insider Preview ΠΎΡ‚ Microsoft, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» доступСн. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C #, Visual Basic, F # ΠΈ Python. Π’ Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я писал это, Π½Π° сайтС ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Visual Studio Community бСсплатно для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, акадСмичСских исслСдований, обучСния Π² классС. ΠΈ Π½Π΅ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ с 5 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ : ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π²Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π² систСму с ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью Microsoft (которая бСсплатна), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ послС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΎΡ†Π΅Π½ΠΊΠΈ 30 Π΄Π½Π΅ΠΉ.

MinGW-w64

Подобно MinGW (ΡƒΠΊΠ°Π·Π°Π½ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ MinGW-w64 прСдоставляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ срСду выполнСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для компиляторов GNU C ΠΈ C ++ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Windows. систСма. Π’ случаС MinGW-w64 эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ.ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт кросс-компиляторы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (скаТСм) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Windows ΠΈΠ· систСмы Linux. Ссли Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅.

Clang: языковой интСрфСйс C для LLVM

Clang — это компилятор C, C ++, Objective C ΠΈ Objective C ++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² основном Apple. Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM. (ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ спроситС, LLVM Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного, хотя историчСски это сокращСниС ΠΎΡ‚ Β«Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня». Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΎΠ½ΠΈ хотят ΠΆΠΈΡ‚ΡŒ с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π² смысл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ люди ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСгодня.) Он Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языковыС стандарты ISO C ΠΈ C ++, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C11, ISO C ++ 11, C ++ 14 ΠΈ части C ++ 1z. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² сСмСйствС компиляторов GNU C. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. К соТалСнию, Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я это ΠΏΠΈΡˆΡƒ, ΠΎΠ½ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходном ΠΊΠΎΠ΄Π΅. Ρ„ΠΎΡ€ΠΌΠ°, ΠΈ Π²Π°ΠΌ придСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΠ°ΠΊΠ΅Ρ‚ компиляторов AMD x86 Open64

Π­Ρ‚ΠΎ вСрсия компилятора Open64, настроСнная для процСссоров AMD ΠΈ содСрТащая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния ошибок.(Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Open64 большС Π½Π΅ разрабатываСтся.) ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C / C ++ соотвСтствуСт стандартам ANSI C99 ΠΈ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ ISO C ++ 98, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ компилятор Fortran), x86 32 Π±ΠΈΡ‚ ΠΈ гСнСрация 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, гСнСрация Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΈ скалярного ΠΊΠΎΠ΄Π° SSE / SSE2 / SSE3, OpenMP 2.5 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, MPICh3 для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ распрСдСлСнной ΠΈ раздСляСмой памяти, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой IEEE 754, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ (глобальная, цикличСская, ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·, обратная связь ΠΈ Ρ‚. Π΄.) ΠΈ Ρ‚. Π΄.Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ AMD Core Math ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Для этого компилятора трСбуСтся Linux.

SDK NVIDIA HPC

SDK NVIDIA HPC (Π³Π΄Π΅ HPC, вСроятно, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния) прСдоставляСт C, C ++ ΠΈ Fortran. компиляторы, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, инструмСнты профилирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ Ρ‚. Π΄. для Linux (Intel x86_64, OpenPOWER ΠΈ ARM Server) ΠΈ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, систСмы Windows x64. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ CUDA, OpenACC ΠΈ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ускорСниСм Π½Π° GPU, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ»Π½Ρ‹Ρ… спСцификаций C ++ 17 с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° графичСскиС процСссоры NVIDIA Π±Π΅Π· использования ΠΏΡ€Π°Π³ΠΌ ΠΈΠ»ΠΈ языковых Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ компилятора Amsterdam

АмстСрдамский компиляторный ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ (Β«ACKΒ») для систСм Ρ‚ΠΈΠΏΠ° Unix, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Linux, прСдставляСт собой кроссплатформСнный компилятор для ANSI C, K&R C, Pascal, Modula-2 ΠΈ BASIC (хотя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° BASIC ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Π°, согласно ΠΈΡ… сайту). Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для самых Ρ€Π°Π·Π½Ρ‹Ρ… процСссоров, хотя ΠΎΠ½ Π±Ρ‹Π» протСстирован Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для 8086 (i86), 80386 (i386), 68000, 8080 ΠΈ VideoCore IV. Π€ΠΎΡ€ΠΊ этого компилятора слуТил ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π°Π±ΠΎΡ€ инструмСнтов для Minix 1 ΠΈ 2 (Minix 3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Clang).ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° я ΠΏΠΈΡˆΡƒ это (Π² 2020 Π³ΠΎΠ΄Ρƒ), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ заявляСт (Π½Π° сайтС), Ρ‡Ρ‚ΠΎ ΠΎΠ½ Β«Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ чСстно Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ACK для производствСнного ΠΊΠΎΠ΄Π°. Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ€Ρ‹ ΠΈΠ»ΠΈ Ссли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСимущСства ACK (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΠΎΠ΄ ΠΊΠ»ΡŽΡ‡ toolchain Ρ†Π΅Π½Π΅Π½ для вас) ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ качСство ΠΊΠΎΠ΄Π° Β». Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ Π²ΠΈΠ»ΠΊΠ° Watcom V2

Π­Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ (Ρ‚. Π•. ΠžΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅), казалось Π±Ρ‹, Π·Π°ΡΡ‚ΠΎΠΏΠΎΡ€ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Open Watcom (см. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС).Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ для Windows (16-Π±ΠΈΡ‚, 32-Π±ΠΈΡ‚ ΠΈ 64-Π±ΠΈΡ‚), Linux (32-Π±ΠΈΡ‚ ΠΈ 64-Π±ΠΈΡ‚), OS / 2 ΠΈ MS-DOS (16-Π±ΠΈΡ‚ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ). Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с Watcom, это Π±Ρ‹Π» Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстный коммСрчСски ΠΏΡ€ΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ компилятор, ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ выпуск ΠΈ выпустили Π΅Π³ΠΎ исходный ΠΊΠΎΠ΄ (ΠΏΠΎΠ΄ общСствСнной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Sybase Open Watcom). На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ½Π° всС Π΅Ρ‰Π΅ находится Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, хотя ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ сборка доступна для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сайтС страницу ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ².

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Watcom / Open Watcom C / C ++ Compiler

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Watcom C / C ++ (Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ компилятор Open Watcom C / C ++) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈ бСсплатный. Π­Ρ‚ΠΎ компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Win32, Windows 3.1 (Win16), OS / 2, Netware NLM, MSDOS (16- ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ) ΠΈ Ρ‚. Π΄. Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Π½Π½Ρ‹ΠΌ компилятором нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ (ΠΏΠΎΠΊΠ° Sybase Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π»Π° Π΅Π³ΠΎ). ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстный STLport (стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° шаблонов C ++ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΊ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (см. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС) Ρ‚Π°ΠΊΠΆΠ΅ доступСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π», ΠΏΠΎΡ…ΠΎΠΆΠ΅, застопорился (послСдняя ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² 2010 Π³ΠΎΠ΄Ρƒ).

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Digital Mars C / C ++ (Π·Π°ΠΌΠ΅Π½Π° Symantec C ++)

Digital Mars C / C ++ — это прямая Π·Π°ΠΌΠ΅Π½Π° компилятора Symantec C ++ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Win32, Windows 3.1, MSDOS ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ MSDOS. Если Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ машинС Π½Π΅Ρ‚ процСссора с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π΄ΠΎ Pentium), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ эмуляция с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ C ++ ΠΈΠ· Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ³ΠΎ руководства ΠΏΠΎ C ++ с коммСнтариями (ARM). ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ языковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AT&T вСрсии 3.0, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ идСнтификация Ρ‚ΠΈΠΏΠ° срСды выполнСния.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π˜Π‘ΠŸ (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C)

На самом Π΄Π΅Π»Π΅ это графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ исходного уровня для X Window, Π½ΠΎ ΠΎΠ½ содСрТит встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΠ»ΠΈ нСсколько исходных Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания исполняСмого Ρ„Π°ΠΉΠ»Π° с Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ выполнСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° для этого исполняСмого Ρ„Π°ΠΉΠ»Π°. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ прототипирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ»ΠΈ просто для изучСния языка, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это.Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Solaris, SunOS, Linux, FreeBSD, BSD / OS ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы Unix.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C BDS

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ старый (Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ) компилятор BDS C для систСм 8080 / Z80 CP / M? Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ находится Π² общСствСнном достоянии вмСстС с исходным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° языкС ассСмблСра. ΠŸΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ компилятора с ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ руководством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΡΠΌΠ΅ΠΈΠ²Π°Ρ‚ΡŒ это, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° 8080/8085 / Z80 для встроСнных систСм с нСбольшой Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, написаниС собствСнных ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Π·Π°ΠΌΠ΅Π½Ρ‹ любого ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ функциям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы).

Apple Xcode для Mac OS X

Xcode — это интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Apple, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ подсвСтки синтаксиса, систСму управлСния сборкой, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, компилятор GNU C (gcc), ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ интСрфСйса, AppleScript Studio, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Java, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ WebObjects ΠΈ Ρ‚. Π΄. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Apple Developer Connection (ADC) Ρ‡Π»Π΅Π½Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ инструмСнты, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ½Π»Π°ΠΉΠ½-члСнство бСсплатноС.

Π’ΠΈΠ»ΠΊΠ° Tiny C

Π­Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΊ компилятора Tiny C (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распространяСтся Π² Π²ΠΈΠ΄Π΅ исходного ΠΊΠΎΠ΄Π°.Как ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ компилятор Tiny C, ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандарта ISO C99. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Linux ΠΈ Windows ΠΈ распространяСтся ΠΏΠΎΠ΄ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ общСствСнной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU.

МСньший C

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Smaller C — это ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ 16- ΠΈΠ»ΠΈ 32-разрядный язык ассСмблСра Intel x86 (80386 ΠΈ Π½ΠΎΠ²Π΅Π΅). ΠΊΠΎΠ΄ для NASM, YASM ΠΈΠ»ΠΈ FASM (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСсплатны aseemblers), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π² Windows, Mac OS X, Linux ΠΈ DOS. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ MIPS ΠΈ TR3200.Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ стандарта ANSI C89 ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ANSI C99. Он способСн компилирования. Однако Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C всС Π΅Ρ‰Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Orange C

Orange C Compiler — это ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ (Β«ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΒ», Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ английского) ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ послСдниС стандарты C, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C99 ΠΈ C11. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ Windows, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ΄ DOS, ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (с подсвСткой синтаксиса ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°), ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рСсурсов Win32.Он ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Win32 ΠΈ MSDOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Intel ΠΈ Motorola (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для встраиваСмых систСм). Для Π²Ρ‹Π²ΠΎΠ΄Π° MSDOS ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ DOS. Автор этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ компилятор CC386, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½ Π½Π° эта страница.

PCC — ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ компилятор C

PCC основан Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Portable C Compiler ΠΎΡ‚ Π‘. К. ДТонсона. ЦСль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой быстрый компилятор C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ C99.ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ — это Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ компилятор, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² OpenBSD ΠΈ NetBSD.

DeSmet C

DeSmet C Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° C Π² 1980-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ компилятор MSDOS C. Он Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU GPL, ΠΈ поставляСтся с руководствами, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ сторонним ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Tiny C Compiler — самый малСнький компилятор C для Linux

[ ОбновлСниС : Π°Π²Ρ‚ΠΎΡ€ сообщаСт Π½Π° сайтС, Ρ‡Ρ‚ΠΎ большС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ компилятором.Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° эта страница для Ρ„ΠΎΡ€ΠΊΠ° этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС Π΅Ρ‰Π΅ продолТаСтся Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания.] Π­Ρ‚ΠΎΡ‚ малСнький Linux ΠΈ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Windows C Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ собствСнныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ x86. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, собираСт ΠΈ связываСт Π² нСсколько Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ GCC. Π’ настоящСС врСмя компилятор приблиТаСтся ΠΊ стандарту ISO C99. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ†. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π€Π°ΠΉΠ»Ρ‹ сцСнария C (просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку shebang « #! / Usr / local / bin / tcc -run » Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку исходного ΠΊΠΎΠ΄Π° C Ρ„Π°ΠΉΠ» Π² Linux, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнялся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ).TCC распространяСтся ΠΏΠΎΠ΄ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ общСствСнной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ пСрСносимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов Objective C ΠΈ компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ваш ΠΊΠΎΠ΄ Objective C Π² простой ΠΊΠΎΠ΄ C. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows, Linux, OS / 2, Macintosh ΠΈ Ρ‚. Π”.

Mingw32 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ C ΠΈ C ++

Π­Ρ‚Π° систСма поставляСтся с компилятором GNU C / C ++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Win32. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ собствСнный , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свободном доступС.ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой систСмы, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ прилоТСния, созданныС систСмой Cygwin32. (см. Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС), ΠΈ ΠΎΠ½ΠΈ свободны ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ GNU. Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы, основанныС Π½Π° инструмСнтах GNU, Mingw32 поставляСтся Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ инструмСнтами программирования, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, make), инструмСнты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (sed, grep), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ парсСра (bison) ΠΈ Ρ‚. Π΄. Он Ρ‚Π°ΠΊΠΆΠ΅ поставляСтся с компилятором рСсурсов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш РСсурсы Windows.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ GNU C / C ++

Π­Ρ‚ΠΎ страница ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ компиляторов GNU, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ исходный ΠΊΠΎΠ΄ для компиляторы GNU C, C ++, Fortran, Ada, Go ΠΈ D, Π° Ρ‚Π°ΠΊΠΆΠ΅ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Pelles C

Π­Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Π² Windows компилятор C, основанный Π½Π° LCC (см. Π’Π°ΠΊΠΆΠ΅ LCC-Win32 Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° эта страница). Π­Ρ‚ΠΎ содСрТит компилятор C, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, компилятор рСсурсов, компилятор сообщСний, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make ΠΈ Ρ‚. Π΄. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ для Windows, Ρ‚Π°ΠΊ ΠΈ для Pocket PC.

DJGPP ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ C ΠΈ C ++

Π­Ρ‚ΠΎ систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, основанная Π½Π° компиляторС GNU C / C ++. Он Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Windows 95. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ полная систСма с IDE, графичСскими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ лСксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² (flex), Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ парсСров (bison), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ grep, sed), ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° обслуТивания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, make), Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ dos ΠΈ Ρ‚. Π΄. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ΄ΡƒΡ‚ с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Cilk Π½Π° основС ANSI C

Cilk — это язык Π½Π° основС ANSI C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ «ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ эффСктивно для эксплуатации динамичСский, высокоасинхронный ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π² стилС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний «. На ΠΈΡ… Π²Π΅Π±-сайтС упоминаСтся, Ρ‡Ρ‚ΠΎ Cilk ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π΅Ρ… ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ³ΠΎ уровня: StarTech, Socrates ΠΈ Cilkchess.

Sphinx C — компилятор

Π­Ρ‚ΠΎΡ‚ компилятор MSDOS прСдставляСт собой своСго Ρ€ΠΎΠ΄Π° Π³ΠΈΠ±Ρ€ΠΈΠ΄ компилятора C ΠΈ ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ Β«ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ языка CΒ». ΠΏΡ€ΠΈ сохранСнии эффСктивности ассСмблСра.»ΠžΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSDOS ΠΈΠ»ΠΈ Π€Π°ΠΉΠ»Ρ‹ .OBJ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСстС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌΠΈ для создания исполняСмого Ρ„Π°ΠΉΠ»Π°. Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ ссылка Π²Π΅Π΄Π΅Ρ‚ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для компилятора. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Sphinx C- Compiler.

LSI C-86 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C

Π’Π΅Π±-сайт этого компилятора написан Π½Π° японском языкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я Π½Π΅ понимаю, Π½ΠΎ я понимаю, Ρ‡Ρ‚ΠΎ это это кросс-компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ROMable ΠΊΠΎΠ΄.ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ старая вСрсия (3.30c) компилятора Π±Ρ‹Ρ‚ΡŒ свободным. БСсплатная вСрсия Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Волько MSDOS.

ΠšΡ€ΠΎΡΡ-компилятор SDCC C

Π­Ρ‚ΠΎ кросс-компилятор C, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для микропроцСссоров Intel 8051, DS390, Z80, HC08 ΠΈ PIC. Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Π΄Ρ€ΡƒΠ³ΠΈΡ… 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… MCU ΠΈΠ»ΠΈ PIC. Он поставляСтся с пСрСнастраиваСмым ассСмблСром ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного ΠΊΠΎΠ΄Π° ΠΈ симулятор, ΠΈ ΠΎΠ½ способСн ΠΊ мноТСству ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы со стандартом C99.Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилятора доступСн ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ хост-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Linux, Windows, Mac OS X, Alpha, Sparc ΠΈ Ρ‚. Π”.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C LADSoft CC386

Π­Ρ‚ΠΎ компилятор ANSI C для MSDOS / DPMI ΠΈ Win32, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, элСмСнтарный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡŒ DOS (вСрсия MSDOS), IDE (вСрсия Win32) ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make. Π’Π°ΠΊΠΆΠ΅ доступСн исходный ΠΊΠΎΠ΄. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ конструкций C99, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запускаСтС Π΅Π³ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости с C99.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Cygwin (компиляторы C ΠΈ C ++)

Π­Ρ‚ΠΎΡ‚ Β«ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Β» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ компилятор коммСрчСского качСства (GNU C / C ++), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Win32 GUI ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Π― Π½Π΅ использовал это ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ сам, Π½ΠΎ, судя ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Ρ‡ΠΈΡ‚Π°Π», ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ собствСнный ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилятора, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ инструмСнты. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ заставляСт вас Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄, Ссли Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ со своими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ опция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, которая заставит Π΅Π³ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, позволяя Π²Π°ΠΌ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ваши прилоТСния Π±Π΅Π· источников.

LCC — компилятор с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ пСрСназначСния для ANSI C

LCC — это компилятор C (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Alpha, Sparc, MIPS R3000 ΠΈ Intel x86. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³Π° ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ пСрСнастройки написано Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ компилятора, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄ компилятора C. Бсылка Π²Ρ‹ΡˆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ LCC (Ρ‚Π΅Ρ… ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²), Ρ‡Π΅ΠΌ описано Π² ΠΊΠ½ΠΈΠ³Π΅.

Π¦ΠΈΠΊΠ»ΠΎΠ½ C

Cyclone C — это Π½Π΅ строго компилятор ANSI C, Π° компилятор «бСзопасного Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π°Β» C. Он обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ для Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°, Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ Π³Ρ€Π°Π½ΠΈΡ† массива ΠΈ Ρ‚. Π΄. Π’ настоящСС врСмя Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux ΠΈ Windows (послСдний Ρ‡Π΅Ρ€Π΅Π· Cygwin) ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² вашСй систСмС Π±Ρ‹Π»ΠΈ инструмСнты компилятора GNU (см. эта страница).

Π’ΡƒΡ€Π±ΠΎ C 2,01

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ, Π½ΠΎ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ Turbo C 2.01 для DOS доступСн бСсплатно Ρƒ Π½ΠΎΠ²Ρ‹Ρ… Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² (Ρ€Π°Π½Π΅Π΅) инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland. Π­Ρ‚ΠΎ Π±Ρ‹Π» Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ компилятор ΠΈΠ· Π”Π½ΠΈ MSDOS, извСстныС своим быстрым Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ компиляции, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Β«IDEΒ») ΠΈ (Π½Π° основС DOS) Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C LCC-Win32

[ ОбновлСниС : этот компилятор большС Π½Π΅ доступСн. Для справки, Ρ€Π°Π½ΡŒΡˆΠ΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу www.cs.virginia.edu/~lcc-win32/ .]
[ ОбновлСниС обновлСния : Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ посСтитСли сказали ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ доступно Π½Π° https: // lcc-win32.services.net/ . Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ мСня Π½Π΅Ρ‚ возмоТности ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ источник, ΠΈ Ρ‡Ρ‚ΠΎ это Π½Π΅ сторонний сайт, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΉ Ρ‡ΡŒΠΈ-Π»ΠΈΠ±ΠΎ авторскиС ΠΏΡ€Π°Π²Π° ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ распространяя Π·Π°Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ врСдоносным ПО исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, вмСсто этого я ΠΎΡΡ‚Π°Π²Π»ΡΡŽ ссылку Π² этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅. ΠŸΡƒΡΡ‚ΡŒ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΄ΠΈΡ‚Π΅Π»Π΅Π½, ΠΈ всС Ρ‚Π°ΠΊΠΎΠ΅.]
Π­Ρ‚ΠΎ компилятор C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Win32 GUI ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния. Он поставляСтся со своим собствСнным ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ, IDE, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ рСсурсов ΠΈ компилятором рСсурсов. LCC-Win32 основан Π½Π° компиляторС LCC (см. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС Π½Π° этой страницС) ΠΈ являСтся бСсплатным. Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нСкоммСрчСского использования.

Π›Π΅ΠΎΠ½Π°Ρ€Π΄ΠΎ IDE

[ ОбновлСниС : этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½.] Leonardo IDE — это IDE Π½Π° Π±Π°Π·Π΅ Macintosh, компилятор ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ C. Он ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ подсвСтки синтаксиса, компилятор ANSI C, компилятор для Π―Π·Ρ‹ΠΊ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ALPHA, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², рСвСрсивный Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ЦП ΠΈ Ρ‚. Π”. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² собствСнный ΠΊΠΎΠ΄, Π° ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ЦП. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ.IDE поставляСтся с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° для Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ³Ρ€, ΠΊΠ°ΠΊ тСтрис, шашки ΠΈ Ρ‚. Π”. IDE ΠΏΠΎΠ»Π΅Π·Π½Π° для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ вашСго исходный ΠΊΠΎΠ΄, поиск ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈ Ρ‚. Π΄.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Compaq C

[ ОбновлСниС : этот компилятор большС Π½Π΅ доступСн. Для справки, Ρ€Π°Π½ΡŒΡˆΠ΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу h40097.www3.hp.com/linux/compaq_c/index.html .] ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux / Alpha Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ бСсплатно Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор C Compaq, просто Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ согласившись ΠΈΡ… Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ΅ соглашСниС.ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания любого Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, коммСрчСских ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ…. Π’ состав компилятора Π²Ρ…ΠΎΠ΄ΠΈΡ‚ матСматичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (ladebug), ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠ· True64 Unix. Он поставляСтся с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ справочными страницами, Π° Ρ‚Π°ΠΊΠΆΠ΅ со Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½Ρ‹ΠΌ руководством ΠΏΠΎ языку ΠΈ Руководство программиста.

(PDF) ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° C с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°? Онлайн-ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов Π½Π° C

MANGALAM SANKUPELLAY & PRESHSHANAN SUBRAMANIAN34

срСда программирования, которая Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ языки программирования

.Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования

ΠΈΠ·-Π·Π° отсутствия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ практичСского ΠΎΠΏΡ‹Ρ‚Π°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ,

студСнтам даСтся нСсколько строк ΠΊΠΎΠ΄Π° для обучСния, ΠΈ послС этого ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Однако ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ

, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ².

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ имССтся ряд ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² C, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C Π‘Ρ‚ΠΈΠ²Π° Π₯олмса [5], Programming in C: A Tutorial [6], C Tutor [7],

ΠΈ C How to ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° [8], Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ срСда обучСния

являСтся Π±ΠΎΠ»Π΅Π΅ тСорСтичСской, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ фактичСскиС тСкстовыС ΡƒΡ€ΠΎΠΊΠΈ

ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ кодирования.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это исслСдованиС Π±Ρ‹Π»ΠΎ сосрСдоточСно Π½Π° создании ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° для ΠΎΠ½Π»Π°ΠΉΠ½-обучСния

Π½Π° языкС программирования C. Он Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…)

Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° C, основном языкС программирования. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ систСмы

являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° графичСски ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄Ρ‹ построчно.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,

позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ

ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΊΠΎΠ΄Π° Π² процСссС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ

Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠΎΠ΄Ρ‹ C ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ измСняСтся функция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

.

Π¦Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

(1) БистСма ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

, особСнно для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов) языка программирования C

.Он ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для ознакомлСния с языком программирования C

.

(2) Знакомство с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° языкС C ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ срСду обучСния

.

(3) Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ программирования Π½Π° C для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ понимания ΠΈ приобрСтСния Π·Π½Π°Π½ΠΈΠΉ

.

2.0 ΠœΠ£Π›Π¬Π’Π˜ΠœΠ•Π”Π˜Π™ΠΠ«Π• УЧЕБНЫЕ ΠŸΠΠšΠ•Π’Π«

ЦСль ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΉ — ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ — ΠΏΠΎΠΌΠΎΡ‡ΡŒ учащимся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ знания, приобрСсти

ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² общСствС.Одна ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ для прСподаватСля

— это Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ учащихся, особСнно Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ учатся.

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ стилям обучСния. НСкоторыС учащиСся Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚

Ρ‡Π΅Ρ€Π΅Π· ассоциации, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ — ΠΏΡƒΡ‚Π΅ΠΌ экспСримСнтов; Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅

Π±ΠΎΠ»Π΅Π΅ слуховыС [1].