Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2011 15:46:47

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Isem
В таком случае можно вообще на ассемблере писать (утрирую, конечно).
нельзя, даже утрируя. Ассемблер под разные процессоры разный :)



Офлайн

#2 Янв. 25, 2011 03:41:51

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Андрей Светлов
Ни один компилятор С++ не способен “съесть” код, написанный по С99. Это к слову.
Это уже головная боль разработчиков, а не компиляторов, принимая во внимание, что и C99 не везде и не в полном объеме поддерживается сишными компиляторами . Пишите на C90.
Zubchick
Главное причина выбора С была такая: в отличие от плюсов С имеет неизменный ABI.
ABI (бинарный интерфейс приложений) - это прерогатива на C, а конкретной реализации компилятора.
Zubchick
Ассемблер под разные процессоры разный
Было бы удивительно, если бы это было не так :)



Офлайн

#3 Янв. 25, 2011 09:26:52

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Скорость работы и оптимизация кода

А ведь и верно - оказывается, стандарт С ничего не говорит об ABI.
Только вот ведь какое дело: стандарта нет, а ABI - есть. И все компиляторы, с которыми я работал, понимали друг друга (в рамках одной платформы, разумеется).
На С++ такого просто нет.



Офлайн

#4 Янв. 25, 2011 11:15:33

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Во всех современных компиляторах С++ можно свободно задавать интерфейс работы с бинарными объектами, будь то выравнивание или порядок помещения аргументов в стек, или использование регистров вместо стека, или способ очистки стека при возврате и типы бинарных данных. В том числе и в том виде, который “принят” в С (с помощью extren “C”).



Офлайн

#5 Янв. 25, 2011 12:45:33

nerijus
От:
Зарегистрирован: 2010-06-03
Сообщения: 93
Репутация: +  1  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Насчет 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.



Офлайн

#6 Янв. 25, 2011 13:16:51

Борисенков Сергей
От:
Зарегистрирован: 2011-01-11
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Все это холивар. Ни кто ни кому не препятствует написать плохой код как на С, так и на С++, так и на Pythone. Так же как ни кто не может воспрепятствовать плохо излагать свои мысли по-русски. У каждого языка программирования есть свои недостатки и свои достоинства. И, соответственно, ситуации, когда эти недостатки или достоинства становятся критическими.



Офлайн

#7 Янв. 25, 2011 13:29:16

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

И причем тут оптимизация?
Если плохой алгоритм «закодить» на другом языке (в каких-то определенных случаях работающего быстрее) — это не оптимизация.

Автору — в поставленной задаче, по-моему, краеугольным камнем является выбор структуры данных.
Если более точно опишите что конкретно будет делать ваша программа, могу подумать и попытаться помочь.



Офлайн

#8 Янв. 25, 2011 13:55:16

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Скорость работы и оптимизация кода

Холивар, конечно. :)

Я люблю С++ и предпочитаю скорее на нем, чем на С.
Но у питона несколько сотен функций в public API.
Плюс из соображений этого самого ABI все используемые типы не должны выходить за пределы Plain Old Data.
Поэтому проку от С++ никакого.
Другое дело - сложные C Extensions. Там можно и развернуться.



Офлайн

#9 Янв. 25, 2011 15:33:47

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Скорость работы и оптимизация кода

Борисенков Сергей
Все это холивар. Ни кто ни кому не препятствует написать плохой код как на С, так и на С++, так и на Pythone. Так же как ни кто не может воспрепятствовать плохо излагать свои мысли по-русски. У каждого языка программирования есть свои недостатки и свои достоинства. И, соответственно, ситуации, когда эти недостатки или достоинства становятся критическими
Поддерживаю эту мысль, поэтому цитирую ее, чтобы не писать заново :)
В двойне приятно, что высказана она на форуме по питону, который нас всех тут (я надеюсь) объединяет, а не наоборот.
Торвальдз, безусловно, талантливый чувак, но даже будь он в 10 раз талантливее, тупое следование его советам и считая, что он говорит только абсолютную истину, приведет слепого в глубокую яму.
А фраза “проку от С++ никакого” вызывает только улыбку.



Офлайн

#10 Янв. 25, 2011 16:32:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Скорость работы и оптимизация кода

Ээээ. Я не говорил, что С++ - бесполезный. Совсем наоборот.
Лишь из своего занудства полез в дебри. Уточняя мелкие детали и занимаясь незначительными придирками.
Большая часть вопросов на форуме такие скучные, а тут появился повод зацепиться языками :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version