>>191069
Тот что тебе больше нравится, тебе для многих задач и пайтона хватит. Если хочешь чтобы что-то быстро работало, то тебе нужен не "быстрый" язык, а эффективный алгоритм. Эффективность алгоритмов иллюстрируют с помощью О-нотации. Возьми какую-нибудь книгу по алгоритмам если тебе интересна эта тема.
Но всё-таки в конце концов я должен добавить, что в пайтоне принято модули писать на Си, а не на C++, см PEP-7.
>>191070
>А кто вообще разрабатывает С сейчас и документацию к нему?
Важно понимать разницу между спецификацией языка и реализацией.
Спецификацию языка Си разрабатывает комитет стандартизации.
Реализацию компилятора Си и стандартной библиотеки, уже отдельный команды программистов разрабатывающих компиляторы.
От комитета стандартизации ты можешь получить стандарт языка.
К компилятору тоже есть документация.
Но если тебе нужна информация о стандартной библиотеке, то она обычно ведётся теми же людьми, которые работают над операционной системой. Например в различных линукс дистрибутивах при установленном пакете linux-man-pages ты можешь прочитать документацию по стандартной библиотеки Си введя в терминал
man 3 intro вместо intro можешь подставить любую тебя интересующую функцию стандартной библиотеки.
https://manpages.debian.org/buster/manpages/intro.3.en.html
>Хотел документацию глянуть по нему, нагуглил какой-то сайт со стандартами, но там нет привычной документации, а есть какая-то платная.
Обычно можно найти стандарт на сайте рабочей групы комитета стандартизации, а так вообще стандарты ISO к сожалению платные. Иногда почитывать стандарт бывает полезно, но так-то этот документ предназначен в первую очередь разработчиками компиляторов.
>>191072
>Такой вопрос возник, я с программированием если что пока знаком на низком уровне, что определяет возможно ли вставлять в один язык код другого языка?
Определяет то компилируется язык в бинарный код или нет. Прямо так вставить код одного языка в другой нельзя, но вот можно имея единый application binary interface использовать код в качестве библиотечной функции.
>Вот выше писали, что в си можно вставлять ассемблер, как это получается?
Компилятор обрабатывая исходный код языка Си проходит несколько этапов одним из таких этапов является генерация ассемблерного кода и потом уже из него сборка исполняемого файла.
Если быть внимательным, то ты заметишь, что вместе с компилятором gcc поставляется такой исполняемый файл как as, а вместе с clang поставляется llvm-as. Вот эти as и llvm-as это ассемблеры, нужные для функционирования компилятора.
Вообще тебе вряд ли это пригодиться, а ещё написанный в отдельном файле, а потом включённый как функция в основную часть, код на ассемблере выглядит лучше чем ассемблерная вставка посреди сишного исходника, впрочем в ядре Линукс можно наблюдать и такое.
> И можно ли допустим писать код на том же питоне, потом вставить кусок си, если нужно, потом ассемблер, ну и к примеру java?
Это немного не так работает. Можно отдельный пайтоновский модуль написать на си, скомпилировать и потом импортировать в проект на пайтоне. Этот написанный на Си модуль конечно может содержать в себе ассемблер, но надо понимать, что в таком случае можно будет скомпилировать его только на одной платформе, потому что код на ассемблере привязан к архитектуре процессора. Включить код на java в проект на пайтоне ты не можешь потому что код на java компилируется в байткод виртуальной машины java.
>Я же могу допустим писать код на питоне, а в моментах где нужна ну очень сильная производительность перейти на ассемблер?
Нет не можешь, потому что пайтон компилируется в байткод пайтоновской виртуальной машины, правда выполнение байткода происходит в тот же момент, из-за чего язык можно считать интерпретируемым.
Ассемблер собирается в бинарный исполняемый файл.
Если хочешь сделать что-то быстро стоит подумать над написанием более эффективного алгоритма.
Вот допустим у тебя был код работающий за O(n²), а ты его переписал так что он работает за O(n) здесь n это объём данных, погугли "big o notation" или "омега нотация". После того как ты добился максимальной эффективности алгоритма можно посмотреть на то какие в коде есть узкие места и решить cpu-bound или io-bound задачи решаются в этим местах. Соответсвенно можешь применить треды если это cpu-bound задача или асинхронный ввод-вывод если это io-bound задача.