JavaScript: 55 символов
p=function(x){return (x==x.split('').reverse().join())}
Вышеупомянутое не будет работать, потому что необходимо звонить join
с ""
JavaScript: 55 символов
function p(s){return s==s.split("").reverse().join("")}
G ++ кажется самым популярным. Это бесплатно, портативно и неплохо. Порт Windows (MinGW) действительно был устаревшим, когда я использовал его в последний раз (возможно, год назад).
Компилятор Intel C ++ считается тем, который генерирует самый быстрый код (однако известно, что он генерирует плохой код SIMD для Процессоры AMD).
Вы можете свободно использовать его в GNU / Linux при весьма ограниченных условиях.
Я использовал его в течение некоторого времени, и мне понравилось, что он выдает умные предупреждения, которых нет у других.
VC ++ часто считается лучшей IDE C ++, и, насколько я слышал, компилятор тоже неплох. Это бесплатно (как и бесплатное пиво) и, конечно же, доступно только в Windows.
Если вы интересуетесь программированием для Windows, я бы посоветовал этот компилятор, потому что он всегда актуален и предоставляет более продвинутые функции для этой цели.
Я бы порекомендовал VC ++ для Windows, G ++ для других ОС. Попробуйте бесплатную версию I ++ самостоятельно, чтобы убедиться, стоит ли она своих денег.
Существуют ли задокументированные случаи, когда компилятор производил некорректный вывод, что приводило к отказу критически важного программного обеспечения?
Да, возможно, но я ' Я бы сказал, что в большинстве случаев это, вероятно, ошибка программиста. Например, если кто-то не знает, как работает арифметика с плавающей запятой, легко написать ненадежный код. Хороший программист также должен знать, что гарантирует работу стандарта C ++, а что нет. Она также должна знать, каковы ограничения компилятора, например
Since you mention "as part of a commercial airplane system" in a comment, it may be worthwhile looking at the compilers provided by companies that actually maintain certification in that space, or other safety-critical product spaces. Green Hills Software is one. Wind River is another.
Во-первых, какая платформа, которую вы используете, обычно определяет, какие компиляторы использовать.
Во-вторых, ваш вопрос о надежности и производительности. Я не понимаю, что вы подразумеваете под надежностью. но если вы имеете в виду правильность скомпилированных двоичных файлов, я должен сказать, что пока вы используете стабильную версию любого из упомянутых вами компиляторов, вы не столкнетесь с проблемами «надежности». Все эти компиляторы очень зрелые и использовались в бесчисленных реальных проектах. Так что я бы вообще не беспокоился о надежности.
Что касается производительности, то на этот вопрос сложно ответить, потому что каждый компилятор имеет разные методы оптимизации, которые теоретически могут давать разную производительность. Я надеюсь, что есть кто-то более знающий, чем я, который может рассказать вам об этом.
На самом деле, учитывая, что все компиляторы, о которых вы упомянули, являются высококачественными и зрелыми компиляторами, вам следует задать вопросы не о том, какой компилятор более надежен, а о следующем:
Однако вопрос о методах оптимизации остается открытым, и это притом нетривиальный вопрос. Я надеюсь, что некоторые могут пролить свет на это.
Вопрос о Однако методы оптимизации - это открытый вопрос, и притом нетривиальный. Я надеюсь, что некоторые могут пролить свет на это.
Вопрос о Однако методы оптимизации - это открытый вопрос, и притом нетривиальный. Я надеюсь, что некоторые могут пролить на это свет.
In addition to Bastien Léonard answer: There is one more multi-platform C++ compiler — Comeau. It is the most standards-conformant C++ compiler. Last version has C++0x core language support.
If you're talking about high performance of the output code in the High Performance Computing sense, you may also be interested in Portland Group's compilers and IBM's XL compilers.
Смысл оптимизирующего компилятора заключается в том, что он должен генерировать оптимизированную программу, функционально эквивалентную исходной. Функциональный эквивалент, конечно же, связан с наблюдаемыми эффектами; состояние естественно было бы другим. На мой взгляд, любой компилятор, который может генерировать неправильный перевод, плох, хотя я полагаю, что вы могли бы смягчить некоторые проблемы в разных ситуациях. Одним из преимуществ основного компилятора является то, что ошибки исправляются быстрее.
Что касается производительности, компиляторы обычно выполняют два типа оптимизаций: оптимизации, не зависящие от платформы (на уровне исходного кода / дерево синтаксиса / промежуточное представление), и оптимизации, специфичные для платформы.
Я полагаю, что лучшая независимая от платформы оптимизация, вероятно, заключается в различных академических модификациях существующих компиляторов (но, вероятно, в разных оптимизациях и в каждой). Эти оптимизации в конечном итоге признаются и в конечном итоге становятся популярными.
Что касается оптимизаций для конкретных платформ, я думаю, что компании, производящие эти платформы, часто имеют лучшие оптимизации (например, внутренние компиляторы Intel), но они еще не интегрированы в компиляторы общедоступной версии и, в конечном итоге, тоже не используются.
http://www.compilers.net/Dir/Free/Compilers/CCpp.htm
Microsoft has a good free compiler, but if you're working on unix or mac that will do you little good.
Borland has a good free compiler as well.
I have tried out several free compilers and feel most comfortable with the Dev-C++. The total package is relatively small in size and comes in windows and linux flavors. For me it is perfect to test out the limits of the C++ language. It compiles fast and makes experimentation easy.
I recommend you this software called Digital Mars C/C++ Compiler,and you can get it from http://www.brothersoft.com/digital-mars-… it is a free C/C++ compiler for the for Win32, Win16, DOS32 and DOS environment.
Какую платформу вы используете? Например, Visual C ++ не будет вам полезен в Linux.
На самом деле, три, которые вы упомянули, я бы выбрал по этим причинам.
gcc / g ++: открытый исходный код, проверенный, усовершенствованный благодаря многолетнему опыту совместной работы на многих системах Linux и UNIX. Не очень сильная сторона просто в том, что это автономный инструмент командной строки. Вы можете создать или, возможно, найти свою собственную среду в стиле IDE, но она, так сказать, не «поставляется» таким образом.
Visual C ++: хорошо поддерживается Microsoft, множество примеров кода и документации (MSDN), естественно подключается к Windows API. Не очень сильная сторона в том, что это не особенно, ну, "визуально". Если вы привыкли к Visual Basic (скажем), вы обнаружите, что Visual C ++ работает совсем не так.
Компилятор Intel C ++: увы, у меня нет опыта работы с компилятором Intel, но я полагаю, что он поддерживает параллелизм и имеет высокоточные числовые библиотеки.
Другой, возможно, заслуживающий упоминания - Borland C ++ Builder. Он получает плюс за то, что является средой быстрой разработки приложений с множеством дополнительных элементов управления за счет совместимости с Delphi VCL, но, наоборот, код, разработанный в C ++ Builder, нелегко переносить на другие компиляторы C ++.
Я обнаружил проблемы с использованием Cygwin, такого кода, который не компилируется, но генерирует ошибку сегментации внутри компилятора. Тот же код работает с MinGW.
[править] Вот отчет компилятора:
lista.h: In constructor `Lista<Dado>::Lista() [with Dado = int]':
principal.cpp:15: instantiated from here
lista.h:13: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://cygwin.com/problems.html> for instructions.
У меня больше нет исходного кода, который вызвал ошибку, поэтому я не могу отправить отчет.
[/ edit]