С++

Автор From_Odessa, 28 мая 2024, 11:43

« назад - далее »

_Swetlana

Цитата: Vesle Anne от 01 августа 2024, 10:34
Цитата: _Swetlana от 01 августа 2024, 10:22С ужасом думаю, что мне придётся иметь с этим дело в языке CPython, на который я решила перейти, как только закончу с питоном.
Это же не язык
https://ru.m.wikipedia.org/wiki/CPython
Не то написала.

Cython — язык программирования, упрощающий написание модулей С/C++ кода для Python. Кроме стандартного синтаксиса Python, поддерживаются:
прямой вызов функций и методов C/C++ из кода на Cython;
строгая типизация переменных, классов, атрибутов классов.

Появился в 28 июля 2007
Автор
Robert Bradshaw, Stefan Behnel и др.
Выпуск
3.0.10 (30 марта 2024)[1]
Тестовая версия
3.0.0 alpha 11
Испытал влияние Pyrex

Сайт cython.org

Код Cython преобразуется в C/C++ код для последующей компиляции и впоследствии может использоваться как расширение стандартного Python или как независимое приложение со встроенной библиотекой выполнения Cython.

Toman

Цитата: _Swetlana от 01 августа 2024, 10:22То есть в функции min были одни операции сравнения, а в цикле for - другие. Слов просто нет.
В смысле? В цикле for то, что там написано. Откуда я знаю, что там у вас было написано. Просто предполагаю, что там могло быть что-то из операций <, >, <=, >=, как часто делают. Но вообще там мог быть и вызов какой-нибудь функции.
Функцию min вы опять же сами написали вместо того, чтоб использовать конструкцию из встроенных операций. Но это, в данном случае, не просто функция. Это применение шаблона функции. Который рассчитан на возможность работы с любыми объектами, которые можно сравнивать - но ничего не знает о возможности приведения их типов, о том, в каком направлении программист хочет делать это приведение. И который определяет тип выходного значения функции по типу входных - что, как я уже говорил выше, означает, что они, наверное, должны быть строго одинаковыми. (Я тут говорю "наверное" - потому что с собственно всеми этими продвинутыми/наиболее замороченными фишками плюсов, типа шаблонов и иже с ними, мало знаком, чтоб уверенно говорить, что и как там может/не может работать - только предполагаю из общих соображений).

Собственно, вот это та самая причина, почему я рекомендую всем сначала осваивать Си (или Си-подобное чисто процедурное классическое подмножество средств C++), и только потом переходить к чисто плюсовым вещам, опять же в определённом логическом/историческом порядке - вначале классы, потом уже шаблоны.

_Swetlana

Цитата: Toman от 01 августа 2024, 12:58
Цитата: _Swetlana от 01 августа 2024, 10:22То есть в функции min были одни операции сравнения, а в цикле for - другие. Слов просто нет.
В смысле? В цикле for то, что там написано. Откуда я знаю, что там у вас было написано.
Ну что обычно пишут в цикле for: объявляется переменная целого типа, которая сравнивается с каким-то конечным значением в условии выполнения цикла:
for (int i=0; i < dq.size(); i++)

Toman

Цитата: Utgarda Loki от 01 августа 2024, 09:34Учебник Питона закрыл страниц через 50, поскольку там всё для меня было... alien. В PHP Си-подобный синтаксис, и я решил, чем заводить в голове отдельную папку с совершенно непохожим синтаксисом накладнее, чем запомнить несколько отличий между Си и PHP. Больше к Питону не возвращался.
Вот и у меня подобная история. Несколько раз пытался начать учить Питон - чисто из тех соображений, что это нынче модно, его все учат, его все знают, значит, надо бы тоже выучить. Но нет, добровольно сам себя заставить не могу. Синтаксис настолько вот непохожий, что... Уровень непохожести больше, чем у того же Паскаля, с которым у меня в универе на первом (?) курсе никаких проблем подобного рода не было.

_Swetlana

Цитата: Toman от 01 августа 2024, 12:58Функцию min вы опять же сами написали вместо того, чтоб использовать конструкцию из встроенных операций.
Я погуглила, не обнаружила встроенных минимума и максимума, подумала, что нужно использовать модуль алгоритм.
А что, там есть встроенные минимум и максимум?

_Swetlana

Цитата: Toman от 01 августа 2024, 13:11
Цитата: Utgarda Loki от 01 августа 2024, 09:34Учебник Питона закрыл страниц через 50, поскольку там всё для меня было... alien. В PHP Си-подобный синтаксис, и я решил, чем заводить в голове отдельную папку с совершенно непохожим синтаксисом накладнее, чем запомнить несколько отличий между Си и PHP. Больше к Питону не возвращался.
Вот и у меня подобная история. Несколько раз пытался начать учить Питон - чисто из тех соображений, что это нынче модно, его все учат, его все знают, значит, надо бы тоже выучить. Но нет, добровольно сам себя заставить не могу. Синтаксис настолько вот непохожий, что... Уровень непохожести больше, чем у того же Паскаля, с которым у меня в универе на первом (?) курсе никаких проблем подобного рода не было.
Мне тоже было очень тяжело, потому что простая логика передачи в функцию параметров по ссылке и по значению в питоне отсутствует в принципе. Главное отличие. И появляются замыкания, декораторы, области видимости, которые сохраняют значения локальных переменных после выхода из локальной функции. И из-за этого в питоне невозможно оптимизировать хвостовую рекурсию даже руками.

Vesle Anne

Цитата: _Swetlana от 01 августа 2024, 12:46
Цитата: Vesle Anne от 01 августа 2024, 10:34
Цитата: _Swetlana от 01 августа 2024, 10:22С ужасом думаю, что мне придётся иметь с этим дело в языке CPython, на который я решила перейти, как только закончу с питоном.
Это же не язык
https://ru.m.wikipedia.org/wiki/CPython
Не то написала.

Cython — язык программирования, упрощающий написание модулей С/C++ кода для Python.
О, не знала о таком! Спасибо за расширение кругозора!

Vesle Anne

Цитата: Toman от 01 августа 2024, 13:11Вот и у меня подобная история. Несколько раз пытался начать учить Питон - чисто из тех соображений, что это нынче модно, его все учат, его все знают, значит, надо бы тоже выучить.
Потому что ты его неправильно учишь :)

Toman

#58
Цитата: _Swetlana от 01 августа 2024, 13:14А что, там есть встроенные минимум и максимум?
Нет, встроенных (на уровне синтаксиса языка) нет. Но есть встроенные операции сравнения. И операция условного выбора. Из которых всегда можно на коленке собрать конструкцию, которая выдаст минимум или максимум из двух значений, либо присвоит его какой-то переменной, как я там выше изобразил. Или, при желании, можно самостоятельно из них написать функцию в одну строчку для минимума или максимума конкретного типа, можно и inline, чтобы это не было реальным фактическим вызовом функции (хотя приличные оптимизирующие компиляторы с большой вероятностью и без слова inline сообразят и вкомпилируют такое как inline).

Если пишем именно на плюсах, то воспользоваться шаблоном, как у вас в изначальном примере, думаю, тоже совершенно ок, и, наверное, так же эффективно в смысле получающегося машинного кода - но просто в этом случае нужно явно привести тип, т.к. компилятор либо не может/принципиально отказывается гадать, чего мы хотели, либо, если он таки умеет и станет гадать, не факт, что угадает, и можно получить трудноуловимые ошибки уже в рантайме.

Utgarda Loki

Цитата: Vesle Anne от 01 августа 2024, 10:32
Цитата: Utgarda Loki от 01 августа 2024, 09:34У меня, когда встал вопрос, на чём делать бэкенд (начинку) сайта, с которым меня во времена оны просили помочь: на Питоне, или на PHP
мне удивительно, что такой вопрос вообще возник
В смысле? Я сам его себе поставил. Поскольку дело было для меня абсолютно новым, я проконсультировался с кем-то из программистов из ИТ-отдела, в котором я работал инженером: "на чём сейчас (это было давно... не меньше 15-20 лет назад) сайты пишут?". (Программист сайтами не занимался, но, хотя бы, следил больше меня за такими вещами). Вот он мне и предложил Python и PHP.

Vesle Anne

Цитата: Utgarda Loki от 01 августа 2024, 14:11В смысле?
в смысле зачем для этого вообще рассматривать чистый питон?

_Swetlana

Быть питонистом некрасиво, не это подымает ввысь.
На некоторое время прощаюсь, надеюсь, вернусь уже полупитонистом-полусишником  :)

Utgarda Loki

Цитата: Vesle Anne от 01 августа 2024, 14:21
Цитата: Utgarda Loki от 01 августа 2024, 14:11В смысле?
в смысле зачем для этого вообще рассматривать чистый питон?
Ну, может не чистый, а с чем-то привинченным. Я до этой стадии не добрался. :-[
Вот, когда пишут, что "сайт на Питоне", что имеют в виду?

Vesle Anne

Щас это вроде в основном Django. Я его не знать,  мне он не нужен

Utgarda Loki

Цитата: Vesle Anne от 01 августа 2024, 23:54Щас это вроде в основном Django. Я его не знать,  мне он не нужен
Посмотрел. Да, эта штука облегчила бы создание сайта, без вопросов (кстати, половина сайтов, перечисленная в статье по ссылке у меня в предыдущем сообщении, в Википедии в статье о Django тоже перечислена, так что видимо, "сайт написан на Питоне" — понятие растяжимое). Но. Первая бета-версия этого Django вышла в конце 2005 года, а первая стабильная версия (1.0) — в конце 2008 года. Не хочу сейчас ломать голову, когда точно я помогал с сайтом, но есть нехилый шанс, что на тот момент этот фреймворк или вообще не существовал, или был в стадии бета-тестирования (и у меня было мало шансов узнать о нём, а если бы и узнал, вряд ли бы захотел использовать: программирование и без того достаточно хлопотное занятие, чтобы ещё испытывать на себе баги новой программы, у которой нет ни одной стабильной версии). Возможно, в те времна были какие-то другие подобные, которые можно было прикрутить, но, как я уже сказал, до этого дело не дошло.

Vesle Anne

#65
Ну значит flask был или ещё что-то такое. @Utgarda Loki фреймворки и библиотеки - вот сила питона.  Их есть на любой вкус и любую вашу потребность. Тем более, что на питоне хорошо работает то, что написано не на питоне :) (цитата моего препода).
Я вот этот Django знать не знаю и, если честно, рассчитываю и дальше не знать. При том что питон юзаю каждый день.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
ALT+S — отправить
ALT+P — предварительный просмотр