С++

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

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

Vesle Anne

Цитата: Toman от 31 июля 2024, 15:18Популярность Питона обусловлена не его какой-то особой якобы простотой или мнением большинства, а насильственным навязыванием его со стороны некоторого меньшинства, обладающего очень странными представлениями о том, что такое простота и что такое сложность.
Ещё раз - твоё мнение как всегда отлично от большинства.
ЦитироватьА есть, как минимум, вполне объективный показатель - объём полного описания синтаксиса. И он у Си определённо намного меньше.
Это не показатель простоты языка

_Swetlana

C - нормальный низкоуровневый язык, поэтому на нем и пишут ОС. А вот плюсы - попытка двинутся в сторону высокоуровнего и, как по мне, с ужасным синтаксисом. Ну и в коммерческой разработке он давно потерял позиции - там пишут быстро.
Если изучать какой-то современный язык, можно посмотреть в сторону Go, выше вероятность трудоустройства, чем у питонистов.





_Swetlana

Если журналисты не врут,  то у питонистов на одну вакансию 10 предложений, а у гоистов - меньше двух.

Utgarda Loki

Цитата: Vesle Anne от 31 июля 2024, 13:45твое мнение как обычно не совпадает с мнением большинства :)
Не часто соглашаюсь с Томаном (хотя, не соглашаюсь, обычно, молча), но в данном случае склонен согласиться. Я, правда, не так уж много языков пытался учить (за отсутствием необходимости), и до сколько-нибудь внятного уровня выучил только PHP (если его можно назвать языком программирования). По моему опыту, проще, чем C, было выучить только Ассемблер, но с ним другая проблема: чтобы написать на нём что-то осмысленное, надо уж очень много знать о работе компонентов компьютера на низком уровне. Не зря на нём сейчас ничего, кроме кусков драйверов, не пишут.

Toman

Цитата: Vesle Anne от 31 июля 2024, 15:40Это не показатель простоты языка
Это, как минимум, показатель сложности барьера на входе. Пока это описание не заучишь наизусть, невозможно даже начинать осваивать язык и что-то на нём писать. Потому что ситуация "а вот сюда не смотрите/не обращайте внимания, тут происходит одна фигня, которую мы пока не проходили, но типа пока это не важно, но просто без этого тут было неудобно/невозможно обойтись, мы это рассмотрим потом через пятнадцать уроков" - неприемлема, при ней ученик перестаёт понимать текст примеров и доверять себе и учителю/учебнику: как можно пытаться что-то там понять и выучить, если в любой момент в любом месте хоть в готовом примере, хоть в том, что ты сам пытаешься написать, может выскочить какая-то синтаксическая фича, которую типа ещё не проходили.

Utgarda Loki

Цитата: Toman от 31 июля 2024, 15:18Когда в учебном заведении его заставляют учить в обязательном порядке - тут и выбора никакого не остаётся.
Слава Богу, моя учёба пришлась не те буквально 5 лет, когда нас экспериментально не заставляли учить ни Паскаль, ни Питон. Вместо них мы учили С / С++, Perl и немножко Java. Говорят, потом всё вернулось на круги своя.

Toman

Цитата: Utgarda Loki от 31 июля 2024, 16:49По моему опыту, проще, чем C, было выучить только Ассемблер
Тут очень зависимо от конкретной архитектуры и соотв. системы команд. У x86, как мне кажется, система команд и соотв. написание чего-то на ассемблере сильно сложнее среднего по архитектурам, из-за сложной истории и попыток наполовину обеспечивать обратную совместимость. Причём ассемблер там ещё немножко затуманивает систему команд, поскольку объединяет под одним названием по несколько разных команд - хотя это и уменьшает число этих названий, которые надо помнить. И по сравнению с ассемблером этого конкретно семейства архитектур Си, как мне кажется, таки проще - не только в собственно написании, но и в первоначальном освоении.

Utgarda Loki

Цитата: Toman от 31 июля 2024, 17:09хотя это и уменьшает число этих названий, которые надо помнить.
Вот чем меньше надо запомнить, тем, пмсм, проще сам язык. Но простота синтаксиса нивелируется сложностью понимания (человек не машина) и сложностью отладки.

Цитата: Toman от 31 июля 2024, 17:09И по сравнению с ассемблером этого конкретно семейства архитектур Си, как мне кажется, таки проще - не только в собственно написании, но и в первоначальном освоении.
Конечно. Разве ж я спорю? Си не в плане синтаксиса, а в плане возможности писать осмысленные программы гораздо проще.

Vesle Anne

Цитата: Toman от 31 июля 2024, 16:59
Цитата: Vesle Anne от 31 июля 2024, 15:40Это не показатель простоты языка
Это, как минимум, показатель сложности барьера на входе.
абсолютно нет.

 

Vesle Anne

Цитата: Utgarda Loki от 31 июля 2024, 16:49
Цитата: Vesle Anne от 31 июля 2024, 13:45твое мнение как обычно не совпадает с мнением большинства :)
Не часто соглашаюсь с Томаном (хотя, не соглашаюсь, обычно, молча), но в данном случае склонен согласиться.
Да кто ж против? Вас теперь двое :)

_Swetlana

Ну вот, степик уже подогнал мне курс за 1300, указатели на С++. По-моему, они столько не стоят.
https://stepik.org/course/210038/promo?utm_campaign=newcourses_2024_06_31_sm_933

Vesle Anne

Цитата: Utgarda Loki от 31 июля 2024, 17:17Но простота синтаксиса нивелируется сложностью понимания (человек не машина) и сложностью отладки.
Это, конечно, забавно. Вот вы щас объяснили, почему питон проще си или даже плюсов. И, собственно, почему его и используют в обучении как первый язык программирования

_Swetlana

Отладка в C++ - это нечто. Какие там сообщения об ошибках. Проще самой догадаться, чем пытаться понять, что там компилятор буровит.
Но сижу, решаю потихоньку, чтобы жаба не душила  ;D 

_Swetlana

Кто-нибудь мне может объяснить, как берётся минимум?
Подключаю модули
#include <iostream>
#include <deque>
#include <algorithm>

Далее объявляю очередь:
deque<int> dq = {1, 0, 2, 3, 4, -5, 7, -11, 10, 8, 45, 3, 1024};

Теперь мне нужен минимум из двух чисел. Ну пусть первое число 5, а второе - размер очереди.
Если пишу std::min(5, dq.size()); - ошибка.

А если вот так - всё работает:
int k = dq.size();
std::min(5, k);

Vesle Anne

Цитата: _Swetlana от 31 июля 2024, 16:21Если журналисты не врут,  то у питонистов на одну вакансию 10 предложений, а у гоистов - меньше двух.
не удивительно. Питонистов развелось :)

From_Odessa

Да, я помню, как в Интернете вдруг случился настоящий бум вопросов о питоне и рекламы обучения ему :)

From_Odessa

Для меня синтаксис С++ явно проще и доступнее, чем у питона. Потому что С++ я изучал, а питон - нет, и в глаза его не видел  :green:

Toman

Цитата: _Swetlana от 31 июля 2024, 22:44Если пишу std::min(5, dq.size()); - ошибка.

А если вот так - всё работает:
int k = dq.size();
std::min(5, k);
Подозреваю, что дело в этом:
Цитироватьsize_type size() const;
Т.е. формально, согласно объявлению, там возвращается другой тип, не int, хотя внутри и что-то целочисленное. Если так, то должно помочь явное приведение типа прямо в выражении и без создания этой вспомогательной переменной.

_Swetlana

Цитата: Toman от 01 августа 2024, 02:35
Цитата: _Swetlana от 31 июля 2024, 22:44Если пишу std::min(5, dq.size()); - ошибка.

А если вот так - всё работает:
int k = dq.size();
std::min(5, k);
Подозреваю, что дело в этом:
Цитироватьsize_type size() const;
Т.е. формально, согласно объявлению, там возвращается другой тип, не int, хотя внутри и что-то целочисленное. Если так, то должно помочь явное приведение типа прямо в выражении и без создания этой вспомогательной переменной.
Понятно. Просто размер очереди использовался в цикле for, dq.size() сравнивался с переменной целого типа, я думала, что там происходит автоматическое преобразование типа, раз такое сравнение проходило.

Toman

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

int k = (int)dq.size();
k<5?k:5; /* если нам нужно использовать это выражение только один раз */
/* или */
if(k>5) k=5; /* если нам удобно сохранить значение минимума в переменной, а сам размер хранилища сохранять не нужно, вот прямо сразу ту вспомогательную переменную и использовать */
/* или то же, в чуть более ухарском стиле, */
k>5 && k=5;

Toman

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

Utgarda Loki

Цитата: From_Odessa от 31 июля 2024, 23:26Для меня синтаксис С++ явно проще и доступнее, чем у питона. Потому что С++ я изучал, а питон - нет, и в глаза его не видел  :green:
У меня, когда встал вопрос, на чём делать бэкенд (начинку) сайта, с которым меня во времена оны просили помочь: на Питоне, или на PHP, я скачал и открыл два учебника... Учебник Питона закрыл страниц через 50, поскольку там всё для меня было... alien. В PHP Си-подобный синтаксис, и я решил, чем заводить в голове отдельную папку с совершенно непохожим синтаксисом накладнее, чем запомнить несколько отличий между Си и PHP. Больше к Питону не возвращался.

_Swetlana

Цитата: Toman от 01 августа 2024, 03:49
Цитата: _Swetlana от 01 августа 2024, 02:54я думала, что там происходит автоматическое преобразование типа, раз такое сравнение проходило
Так оно и происходит, это преобразование. Но там же ж, наверное, были встроенные арифметические операции сравнения? А тут вы захотели использовать шаблон из плюсовской библиотеки, которому, видимо, нужно, чтобы аргументы уже были одного типа (как минимум потому, что если они будут разного типа, хоть и приводимого друг к другу, встанет вопрос, а какой тип, собственно, возвращать - ну это не считая того, что если типы разные, то при разном направлении приведения и результат может получиться разный не только по типу, но и по фактическому содержанию).
То есть в функции min были одни операции сравнения, а в цикле for - другие. Слов просто нет. С ужасом думаю, что мне придётся иметь с этим дело в языке CPython, на который я решила перейти, как только закончу с питоном.

Vesle Anne

#48
Цитата: Utgarda Loki от 01 августа 2024, 09:34У меня, когда встал вопрос, на чём делать бэкенд (начинку) сайта, с которым меня во времена оны просили помочь: на Питоне, или на PHP
мне удивительно, что такой вопрос вообще возник
П.С. PHP как раз пыталась учить, в отличие от си, не зашло. Слишком замороченно. Сейчас пока смотрю на R, потом, если будет время, модет и до сей дойду. Наверное, все таки до плюсов

Vesle Anne

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

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

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

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