Форум сайта python.su
Isemнельзя, даже утрируя. Ассемблер под разные процессоры разный :)
В таком случае можно вообще на ассемблере писать (утрирую, конечно).
Офлайн
Андрей СветловЭто уже головная боль разработчиков, а не компиляторов, принимая во внимание, что и C99 не везде и не в полном объеме поддерживается сишными компиляторами . Пишите на C90.
Ни один компилятор С++ не способен “съесть” код, написанный по С99. Это к слову.
ZubchickABI (бинарный интерфейс приложений) - это прерогатива на C, а конкретной реализации компилятора.
Главное причина выбора С была такая: в отличие от плюсов С имеет неизменный ABI.
ZubchickБыло бы удивительно, если бы это было не так :)
Ассемблер под разные процессоры разный
Офлайн
А ведь и верно - оказывается, стандарт С ничего не говорит об ABI.
Только вот ведь какое дело: стандарта нет, а ABI - есть. И все компиляторы, с которыми я работал, понимали друг друга (в рамках одной платформы, разумеется).
На С++ такого просто нет.
Офлайн
Во всех современных компиляторах С++ можно свободно задавать интерфейс работы с бинарными объектами, будь то выравнивание или порядок помещения аргументов в стек, или использование регистров вместо стека, или способ очистки стека при возврате и типы бинарных данных. В том числе и в том виде, который “принят” в С (с помощью extren “C”).
Офлайн
Насчет C vs C++ Линус Торвальдс написал одному в ответ почему GIT не нaписан на C++:
C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C.
In other words: the choice of C is the only sane choice. I know Miles Bader jokingly said “to piss you off”, but it's actually true. I've come to the conclusion that any programmer that would prefer the project to be in C++ over C is likely a programmer that I really would prefer to piss off, so that he doesn't come and screw up any project I'm involved with.
C++ leads to really really bad design choices. You invariably start using the “nice” library features of the language like STL and Boost and other total and utter crap, that may “help” you program, but causes:
infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny)
inefficient abstracted programming models where two years down the road you notice that some abstraction wasn't very efficient, but now all your code depends on all the nice object models around it, and you cannot fix it without rewriting your app.
In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don't screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don't screw things up with any idiotic “object model” crap.
So I'm sorry, but for something like git, where efficiency was a primary objective, the “advantages” of C++ is just a huge mistake. The fact that we also piss off people who cannot see that is just a big additional advantage.
If you want a VCS that is written in C++, go play with Monotone. Really. They use a “real database”. They use “nice object-oriented libraries”. They use “nice C++ abstractions”. And quite frankly, as a result of all these design decisions that sound so appealing to some CS people, the end result is a horrible and unmaintainable mess.
Офлайн
Все это холивар. Ни кто ни кому не препятствует написать плохой код как на С, так и на С++, так и на Pythone. Так же как ни кто не может воспрепятствовать плохо излагать свои мысли по-русски. У каждого языка программирования есть свои недостатки и свои достоинства. И, соответственно, ситуации, когда эти недостатки или достоинства становятся критическими.
Офлайн
И причем тут оптимизация?
Если плохой алгоритм «закодить» на другом языке (в каких-то определенных случаях работающего быстрее) — это не оптимизация.
Автору — в поставленной задаче, по-моему, краеугольным камнем является выбор структуры данных.
Если более точно опишите что конкретно будет делать ваша программа, могу подумать и попытаться помочь.
Офлайн
Холивар, конечно. :)
Я люблю С++ и предпочитаю скорее на нем, чем на С.
Но у питона несколько сотен функций в public API.
Плюс из соображений этого самого ABI все используемые типы не должны выходить за пределы Plain Old Data.
Поэтому проку от С++ никакого.
Другое дело - сложные C Extensions. Там можно и развернуться.
Офлайн
Борисенков СергейПоддерживаю эту мысль, поэтому цитирую ее, чтобы не писать заново :)
Все это холивар. Ни кто ни кому не препятствует написать плохой код как на С, так и на С++, так и на Pythone. Так же как ни кто не может воспрепятствовать плохо излагать свои мысли по-русски. У каждого языка программирования есть свои недостатки и свои достоинства. И, соответственно, ситуации, когда эти недостатки или достоинства становятся критическими
Офлайн
Ээээ. Я не говорил, что С++ - бесполезный. Совсем наоборот.
Лишь из своего занудства полез в дебри. Уточняя мелкие детали и занимаясь незначительными придирками.
Большая часть вопросов на форуме такие скучные, а тут появился повод зацепиться языками :)
Офлайн