На главную страницу AlgoNet В сотрудничестве с ZDNet
АРХИВ СТАТЕЙ 2001-6-20 на главную / новости от 2001-6-20
AlgoNet.ru
поиск

 

Место для Вашей рекламы!

 

Все новости от 20 июня 2001 г.

Open-source компилятор переведен в третий класс

В понедельник программисты-добровольцы выпустили версию 3.0 GCC. Это не просто известный проект ПО с открытым исходным кодом — это одна из основ всех подобных проектов. GCC — компилятор, преобразующий написанный программистом код в последовательность инструкций, исполняемых процессором. Он используется для создания всего — от Linux и разных версий BSD Unix до такого ПО высокого уровня, как веб-сервер Apache, пользовательский интерфейс Gnome и программа немедленного обмена сообщениями Jabber. GCC может работать на микропроцессорах из более 40 разных семейств и генерировать код для них.

Почти десять лет назад, когда Эрик Оллман (Eric Allman) создавал свой open-source сервер e-mail Sendmail, GCC представлял собой всего лишь один из набора компиляторов, который Оллману приходилось поддерживать, чтобы его ПО могло работать на разных компьютерах. «Я пользовался многими компиляторами, и GCC был одним из них, — рассказывает он. — Теперь GCC настолько распространен, что, кроме него, почти ничего не нужно». Но GCC используется не только в проектах open source. Позволяя создавать программы для десятков разных процессоров, он широко применяется и для разработки многочисленных частных систем. Даже Microsoft поставляет этот компилятор в составе своего ПО Interix, обеспечивающего исполнение Unix-программ на Windows-машинах.

Версия 3.0, которая разрабатывалась более года, наделяет компилятор рядом новых возможностей. Среди них мощные средства генерации инструкций для процессоров Intel — компания несколько лет финансирует эту разработку. Способности GCC по отношению к другим процессорам также улучшены. По словам разработчика GCC из Red Hat Джеффа Лау (Jeff Law), теперь компилятор поддерживает процессоры Intel Itanium и XScale, Motorola MCore 210 и 340, Mitsubishi D30V, Atmel AVR и Fujitsu FR30.

Новая версия GCC — первое крупное обновление ПО с момента выхода в 1992 году версии 2.0. С тех пор GCC перенес болезнь, которую многие расценивают как одну из самых серьезных угроз движению open source: раскол, когда две группы программистов начинают вести разработку в разных направлениях.

История GCC
Впервые разработку GCC начал основатель Free Software Foundation Ричард Столлман (Richard Stallman). Версия 1.0 была готова в мае 1987 года. Аббревиатура GCC тогда означала GNU C Compiler, так как это был компилятор программ, написанных на языке С, для проекта Столлмана по созданию клона Unix GNU's Not Unix(GNU). Теперь, так как GCC применяется для программ, написанных на многих других языках, GCC принято расшифровывать как GNU Compiler Collection.

Столлман создал концепцию ПО free software — которое он определил не как «бесплатное», а как свободно распространяемое при условии, что исходный код остается открытым. Он выпустил GCC на условиях General Public License, лицензии, которая теперь используется для многих проектов open source. Ядро Linux, ставшее сердцем проекта операционной системы GNU, также распространяется на условиях GPL.

С 1999 года разработку GCC активно поддерживал дистрибьютор Linux Red Hat — после покупки компании Cygnus Solutions, которая занималась тем, что адаптировала GCC для новых процессоров. «Первые заказчики Cygnus применяли GCC для своих частных систем, таких как сетевое оборудование, — рассказывает основатель Cygnus, а теперь главный инженер Red Hat Майкл Тиманн (Michael Tiemann). — Первым крупным заказчиком Cygnus стала Nortel в 1990 году. Год спустя к ней присоединились Intel и Ericsson, а в 1992 — Cisco Systems и Alcatel». Тиманн был активным участником ранних разработок компилятора. Он начал с версии 1.0 в 1987 году и добавил к GCC несколько важных новых функций, включая способность работать на процессоре National Semiconductor 32032 и воспринимать ПО, написанное на языке С++. Тиманн участвовал и в переводе GCC на процессоры Motorola 8800, Intel 386, MIPS и Sun Sparc. Кроме того, он помог заложить основу для поддержки процессоров с «очень длинными словами инструкций» (VLIW), таких как Intel Itanium.

Один из аргументов критиков GCC заключается в том, что это компилятор слишком широкого назначения: возможность применения для столь многих микропроцессоров и языков программирования означает, что результирующий код получается неоптимальным. Но Тиманн защищает GCC. По его словам, решая проблему создания универсального компилятора, разработчики GCC нашли приемы, применимые ко множеству разных процессоров. «Генетический материал, охватывающий все эти архитектуры, позволяет создать универсальный компилятор, который работает лучше специализированного», — пояснил он. Например, модификация GCC для процессоров MIPS и Sun заложила основу для адаптации к будущим процессорам Intel, перенявшим их конструкцию.

Кроме того, в GCC есть модули, оптимизирующие ПО для конкретных процессоров. «Некоторые компании тратят по 50-100 млн $ на разработку компилятора для определенной архитектуры, который обеспечил бы им лидерство, — говорит Тиманн. — Но, по-моему, способность компилятора с общей инфраструктурой поддерживать широкий спектр микропроцессоров и быстро адаптироваться к новым микропроцессорам по мере их появления обеспечивает наилучшие возможности для извлечения максимума выгод из закона Мура».

Cygnus, зарабатывающая на момент присоединения к Red Hat около 20 млн $ в год, во многом построила свой успех на «встраиваемых» конструкциях, таких как сетевые маршрутизаторы и другое коммуникационное оборудование. Первые инвестиции Intel в Cygnus были связаны с разработкой GCC-поддержки для коммуникационного процессора Intel i960, который уже снят с производства. Сегодня GCC охватывает весь ландшафт вычислительной техники. «Поддерживая так много машин и платформ, он стал чем-то вроде компилятора по умолчанию, — говорит Столлман. — Людям нужна возможность везде применять один и тот же компилятор».

Раскол
Пока Тиманн работал в Cygnus, его компания оказывала сильное влияние на GCC. Однако у назначенного организацией Free Software Foundation куратора GCC не было времени на то, чтобы проанализировать все изменения в GCC и из-за разногласий по поводу того, как обойтись с этими изменениями, в 1997 году Cygnus решила создать новую версию GCC — EGCS.

В EGCS, по словам Тиманна, Cygnus доказала свою способность серьезно влиять на развитие GCC, не позволяя своим собственным интересам подавлять другие приоритеты. Через некоторое время раскол был преодолен, и в апреле 1999 года Free Software Foundation согласилась использовать код EGCS, а проект EGCS — самоликвидироваться и продолжить работу над GCC. «Это были бескровный раскол и бескровное воссоединение», — отметил Тиманн.
Обсуждение и комментарии

-
21 Jun 2001 9:59 AM
Ботва...

Я когда искал кряк к Intel Compiler 5.0, начитался в конфах о том, как этот gcc компилит под всякие Sun... Производительность в 7!!! раз меньше, чем родным компилером

очередной линуксячий идиотизм
 

me - userinternet.com
21 Jun 2001 10:19 AM
Зря ты так. GCC - очень серьезное достижение Open Source. Правда, едва ли не единственное... А про компиляцию для Sun я тоже слышал нелестные отзывы:)) Ну мы же будем надеяться на улучшения, не так ли?
 

EV
21 Jun 2001 12:21 PM
Какой болван переводил заголовок?????
 

V
21 Jun 2001 1:13 PM
Похоже на автоматический перевод с минимумом ручной правки.
Полно ляпов, искажающих смысл статьи, например, в начале второго абзаца: "GCC представлял собой всего лишь набор компиляторов" следует читать: "...лишь один из набора..."

И кто писал подзаголовок: "Сотрясаются самые основы..."? Третья версия вышла, GCC воссоединился с EGCS, всё нормально. Чему тут сотрясаться?
 

Арт
21 Jun 2001 3:33 PM
Нормальный компилятор - нам когда пришлось писать софт под встраиваемый PowerPC - начали искать компиляторы - все стоят больших денег. Я бы сказал - очень больших. Взяли GCC и под линухом очень даже нормально писали под енто дело. Я правда ушел из той конторы - но ребята свою операционку реального времени на нем наваяли и до сих пор очень мило с ним работают...
 

hamet
21 Jun 2001 5:17 PM
V svojo vremja pod SunOsom ne bylo C++ compilera i bez gcc zhit' bylo ochen ploho.

Zabureli vy rebjata.
Krome togo iz-za multiplatformennosti ispolzovat' ego dlja razrabotki prilozhenija kotoroe na raznyh platformah rabotaet ochen horosho. Kak java. Pishesh na C a kompilish gde hochesh.

Tormoznoj - da. No lutshe nemnogo podolshe pokompilit' chem na kazhdoj platforme izuchat osobennosti rodnogo kompilera.

P.S. Sorry za latinizu - zaranee dlja unixonenavistnikov skazhu: sizhu na Winde.
 

Lagano
21 Jun 2001 5:32 PM
2 hamet:

Подсесть на Винду это опасно... :)
 

VATO
21 Jun 2001 7:08 PM
Довелось сравнивать скорость выполнения комманд на SGI IRIX программ, откомпилированных родным и GCC/EGCS
Так в последнем случае код получался меньше, но более тормозной (падение почти в 3 раза!)
По личному опыту - GCC дает плохой код для RISC - архитектур и почти оптимальный - для CISC

Но инструмент действительно уникальный и жутко удобный, особенно, когда одну и ту же прогу надо гонять на целом зверинце
 

me
21 Jun 2001 8:12 PM
интересно когда под gcc3 начнут компилится xfree, qt, kde.. ядро >= 2.4.6-pre3 уже компилится и glibc 2.2.3 тоже вроде компилится.
 

Maximka - justmmail.ru
22 Jun 2001 6:17 AM
Он используется для создания всего от Linux и разных версий BSD Unix до такого ПО высокого уровня, как программа немедленного обмена сообщениями Jabber.
+++++++++++++++++++++
Да, Джаббер, аднака, повыше уровнем, чем БСДшки всякие, и Линухи мелкие... :)))))
 

Maximka - justmmail.ru
22 Jun 2001 6:19 AM
Сорри, я прогнал.
Имеется ввиду, вероятно, другой смысл уровеня.
 

eXOR
22 Jun 2001 8:34 AM
2 Maximka:
"Быстро поднятая закусь не считается упавшей" ;-)
 

kvasim
26 Jun 2001 3:15 PM
Вот только как РЕД хед купила Цигнус..
почемуто все заторомзилось..
( перед самой покупкой они выпустили ecos 1.3)
и так до сих пор на этом поле ничего.
или они ее решили только за деньги?
ну и за деньги нет..
 

-=SLayER=- - dolzenkouic.rsu.ru
26 Jun 2001 7:01 PM
А в чем беда то, ну раскололись и раскололись, никто ведь GCC за деньги продавать не собрался,
да и исходные коды не закрывал....
 

Mauhuur - warlockskeptik.net
28 Jun 2001 3:35 PM
Сравнивал я gcc с DEC C ещё во времена 2.7.2 - дык вот ничего не изменилось, как был он в 1.5-3 раза на разных тестах тормознее, так и остался...
 

d'Bratik
22 Aug 2001 11:48 PM
Когда наши друзья обратились в HP с вопросом о том, почему синтаксически корректная прога некорректно компилируется их родным компилятором, знаете что они ответили? Они ответили: а вы GCC пробовали? Т.е. возьмите нормальный компилятор :) Так что не надо гнать волну на GCC. Главное, что в третьей версии GCC наконец-то поддерживает исключительные ситуации в многопоточных программах!
 

tosik
27 Sep 2001 8:58 AM
ЛАЖА КАКАЯ-ТО
 

АНТОН
27 Sep 2001 9:00 AM
АНТОН ЛОХ ДА ПРАВДА-ЖЕ
 

 

← май 2001 14  15  18  19  20  21  22  25  26 июль 2001 →
Реклама!
 

 

Место для Вашей рекламы!