Author Topic: Глупые вопросы по С++  (Read 1818 times)

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Глупые вопросы по С++
« Reply #15 on: 01 June 2023, 22:10:18 »
  • 0
  • 0
А в Lua: print "Hello".
Писал об этом на ютубе, здесь ещё раз напишу: в Lua бесит отсутствие нормальной поддержки 64-битных целых чисел, в то время как Питон с лёгкостью посчитает факториал тысячи и выдаст результат с точностью до последней цифры.
https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Int64.html
Дві найголовніші помилки українського народу -- зек і зєк.

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29400
  • Карма: +4065/-342
    • View Profile
Re: Глупые вопросы по С++
« Reply #16 on: 01 June 2023, 22:15:16 »
  • 0
  • 0
С этим не спорю, меня просто покоробили некоторые детали высказывания, но общий смысл высказывания верный.
давайте я заранее 100500 раз извинюсь за профанство, некомпетенцию и т.д., но как бы посмотрите на название темы? У нас уже есть граммар-наци на сайте, зачем ещё кодинг-нацизм разводить? :) Неужели вы на секунду подумали, что я не понимаю, что ни один язык не будет 100% копией другого, иначе они не были бы разными языками? Но это всё - обязательная нумерация строк или использование табуляции для создания блоков - это всё важно для безукоризненного выполнения, да, но это вроде занавесок в горошек для меня.

Намного больше разницу я вижу в том, что в Питон вывод организуется простейшей командой (что для меня более привычно и интутивно), чем в С++, где для этого же надо вызывать библиотеку и сбрасывать выводимый текст в поток, где он маринуется, пока поток не выводится по пока мне мало понятным принципам. Это всё для меня непривычно, странно и (пока) малопонятно. Я понимаю, что полно туториалов в стиле: копируй как обезьянка и будет тебе профит, но я ни живые, ни языки программирования так изучать не умею. Мне надо понять как оно работает и самое главное: ПОЧЕМУ так? есть ли альтернативы? Вот тогда у меня будет ощущение, что я «выучил»

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Глупые вопросы по С++
« Reply #17 on: 01 June 2023, 22:44:06 »
  • 0
  • 0
Ну вы уж извините, я не всегда могу разобраться, что для вас занавеска в горошек, а что действительно важная часть языка. Можем начать с азов. Языки бывают статически типизированные и динамически типизированные. Python и Basic -- динамически типизированные, поэтому действительно похожи друг на друга. А вообще как правило в Питоне функции тоже нужно импортировать из библиотек, но для print сделали исключение, не в последнюю очередь для простоты изучения. А так, на питоне можно и чуть ближе к С++ написать:
Code: [Select]
import sys

if __name__ == "__main__":
    sys.stdout.write("Hello")
« Last Edit: 01 June 2023, 22:59:17 by Upliner »
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Toman

  • Ветеран
  • *****
  • Posts: 1266
  • Карма: +217/-34
    • View Profile
Re: Глупые вопросы по С++
« Reply #18 on: 13 June 2023, 03:31:54 »
  • 0
  • 0
вы опять о деталях, которые в данном случае несущественны. Вот давайте сравним Питон и С++ с Бейсиком попарно и попробуем угадать: какой язык проще зайдет бейсикисту со стажем? Где есть переносимые навыки, а где учиться с нуля? А то, что строчки можно \ разбивать - мишура, мелочь которая мало (или вообще никак) не влияет на сложность изучения языка
Расскажу о себе. Начинал в детстве с Бейсика (исключительно классического, другие варианты оного не пробовал). Потом в школе учили Си (с использованием вот этого "плюсового" ввода-вывода, ну, тогда он писался чуть по-другому, но в целом в том же стиле), зашло отлично, потом ещё сам подучил Си и немножечко плюсов (правда, в архаичном варианте - ну т.е. современных полноценных плюсов со всеми позднейшими фишками особо не знаю, но, думаю, если надо будет покодить некий алгоритм на практике, смогу покодить, не влезая в эти дебри или по минимуму освоив использование тех из фишек, которые задействуются в применяемых библиотеках).

В универе ещё на первом курсе заставляли немножко учить Паскаль и на нём что-то немножко писать - ну, без проблем писал, хоть и без особого удовольствия, как бы почти тот же Си, только другой синтаксис и присутствуют некоторые встроенные функции (что меня как раз не радует - мне идеологически ближе подход Си, где встроенных функций нет, а есть только библиотеки).

А вот Питон... Уж сколько лет он в дикой популярности, уж сколько лет я умом понимаю, что надо его освоить, потому что ну все же на нём умеют, аж школьников всех в школах учат, типа, и только я, лох, строчки написать не могу. Но нет. Вот все эти много лет просто не могу себя заставить это учить по доброй воле. Вот как открываю учебник, на первых же страницах плохеет.

Попробую объяснить, почему. Классический Бейсик - это хоть и интерпретируемый язык, но по логике работы это ж аналог ассемблера/программирования в машинных кодах. Просто машиной является не железный процессор, а очень нехитрый (в случае именно классического Бейсика) софтовый интерпретатор. И когда мы пишем на Бейсике, мы пишем так, как будто пишем на ассемблере, только с кучей упрощений жизни - как по части относительно сложных типов данных, так и по синтаксису. Но построение программы вот то самое.

Дальше - когда переходим к Си или Паскалю - мы хотя бы приблизительно представляем себе, как устроена программа в машинных кодах (а если не писали на реальном ассемблере - как вот я, например, классический Бейсик как раз помогает в облегчённом виде понимать "дух" ассемблерного программирования, скажем так), какие там нативные типы данных, и их - Си или Паскаля - синтаксис оказывается совершенно логичным с точки зрения облегчения/упорядочения низкоуровневого программирования - организации производных типов данных, вызовов функций и т.д.

А вот тот же Питон - это выглядит со стороны как что-то совершенно само по себе, во-первых - оно и на ассемблер не похоже (в отличие от классического Бейсика), и не является прозрачной очевидной процедурной обёрткой для реального машинного ассемблера/машинных кодов, а является языком самого что ни на есть высокого уровня (что само по себе сложно для начала, как бы ни казалось странным). Во-вторых, некоторые особенности его синтаксиса настолько выносят мозг, что пугают с порога. Вот именно меня пугают - как раз с бэкграундом в лице классического Бейсика, Си и нескольких языков с си-подобным синтаксисом (Java, JavaScript, Perl, PHP - хотя последние три уже несколько стремноваты в смысле количества некоего субъективного "синтаксического бардака" - но там он по крайней мере факультативен для программиста, т.е. на них я хотя бы могу писать так, чтобы код выглядел визуально похоже на сишный, и потом я сам смог это прочитать, если понадобится) и Паскаля.

Вот, грубо говоря, синтаксис какого-нибудь Лиспа в этом плане не пугает, или там PostScript'а (хотя на них я никогда не писал, и предметно не знаю). Но там всё визуально чётко. А вот Питон - пугает, в смысле, просто внешний вид кода на нём меня пугает почему-то.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5666
  • Карма: +2052/-156
    • View Profile
Re: Глупые вопросы по С++
« Reply #19 on: 13 June 2023, 04:27:10 »
  • 0
  • 0
Интересно, каково Вам от Haskellʼа?
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Глупые вопросы по С++
« Reply #20 on: 13 June 2023, 07:00:46 »
  • 0
  • 0
Очень странно, что в школе был С++. Продвинутая школа оказалась.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Toman

  • Ветеран
  • *****
  • Posts: 1266
  • Карма: +217/-34
    • View Profile
Re: Глупые вопросы по С++
« Reply #21 on: 13 June 2023, 14:55:24 »
  • 0
  • 0
Очень странно, что в школе был С++. Продвинутая школа оказалась.
Более правильно было бы сказать, что там был Си. От плюсов использовали по сути вот только этот "потоковый ввод-вывод", для удобства. Но что это такое, что такое классы, ООП - этого у нас тогда не было, просто потоковый ввод-вывод показали как некую данность. А так, учили процедурному языку фактически, и только на самом простейшем уровне. Так-то можно было бы, конечно, блюсти чистоту жанра и использовать строго классические сишные библиотеки ввода-вывода - но это потребовало бы сразу же учить язык более серьёзно - с указателями, управлением памятью и всё такое - а на это, видимо, не было времени или уверенности в готовности всех школьников к такому.

Причём, что самое прикольное, в нашей половине класса учитель перед началом курса именно по программированию устроил голосование для выбора между Си и Паскалем. Точно не помню, кажется, голосование потребовало чуть ли не два тура. И в итоге победил Си, чему я был рад (я его тогда не знал, но вполне осознанно голосовал за него, т.к. знал о некоторых его особенностях и "экологической нише").

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29400
  • Карма: +4065/-342
    • View Profile
Re: Глупые вопросы по С++
« Reply #22 on: 13 June 2023, 14:56:54 »
  • 0
  • 0
надо было детям питон преподавать и не засирать мозги :negozhe:

Offline Toman

  • Ветеран
  • *****
  • Posts: 1266
  • Карма: +217/-34
    • View Profile
Re: Глупые вопросы по С++
« Reply #23 on: 13 June 2023, 14:57:07 »
  • 0
  • 0
Интересно, каково Вам от Haskellʼа?
Не пробовал и даже не смотрел на него, совсем не знаю этого зверя даже приблизительно.

Offline Toman

  • Ветеран
  • *****
  • Posts: 1266
  • Карма: +217/-34
    • View Profile
Re: Глупые вопросы по С++
« Reply #24 on: 13 June 2023, 15:09:35 »
  • 0
  • 0
надо было детям питон преподавать и не засирать мозги :negozhe:
То, что синтаксис питона на порядок (а то и более чем на порядок) сложнее синтаксиса Си (по крайней мере, без плюсов) - имхо, бесспорный факт. Сложный синтаксис может быть оправдан для программистов-практиков в частных областях деятельности, где это радикально сокращает физически объём набираемого и читаемого текста (например, в тех же Перле и Питоне ради работы со строками), когда речь идёт о реально больших программах и модулях. То же самое ООП со всеми причитающимися штуками - тоже только для практиков-профессионалов с большими программами.

Но для начального обучения детей такие языки со сложным синтаксисом, описание которого занимает увесистый томик, имхо, крайне плохо подходят. Вот вы сами уже не раз ругались на построение курса, который проходите - как раз потому что вам дают практику на этапе, когда вы не знаете всего синтаксиса, и всё время вылазит что-то непонятное и неожиданное. То же самое я видел и у некоторых других учащих питон. А чтобы такого не было, нужно сразу с места выучить довольно объёмное и малопонятное без примеров полное описание синтаксиса. Замкнутый круг.

Хорошо подходит для начального обучения как раз процедурный язык типа Си или Паскаля, с предельно простым синтаксисом, полное (почти полное, практически достаточное для учёбы) описание которого можно прочитать и усвоить до начала какой-либо практики.

Ну и да, в то время, когда мы учились в школе, о питоне ещё очень мало кто слышал, он не был мейнстримом тогда. Те, кому нужно было много фигачить со строками, напр. биоинформатики, ещё через несколько лет после того по большей части фигачили на Перле (как и веб-программисты тех времён, разумеется).

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +368/-9
    • View Profile
Re: Глупые вопросы по С++
« Reply #25 on: 13 June 2023, 15:22:57 »
  • 0
  • 0
надо было детям питон преподавать и не засирать мозги :negozhe:

Я не пробовал, но, по-моему, питон для детей - сомнительная идея. Там же невозможно обойтись без продвинутых вещей: итераторы, ООП. Например, в учебниках информатики Кушниренко первый вид цикла - это повторить N раз. На питоне это
Code: [Select]
for _ in range(5):
    ...
Использование подчёркивания неочевидно. А если попытаться объяснить смысл первой строки? "Чтобы повторить 5 раз, мы переменной, которая нам не нужна, проходим по некой коллекции длины 5, получится как раз 5 раз; эта коллекция - похоже на список, но не список". Мудрёно.

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

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +368/-9
    • View Profile
Re: Глупые вопросы по С++
« Reply #26 on: 13 June 2023, 15:26:14 »
  • 0
  • 0
То, что синтаксис питона на порядок (а то и более чем на порядок) сложнее синтаксиса Си (по крайней мере, без плюсов) - имхо, бесспорный факт.

А можно пример? Мне кажется, у всех нелисповых языков синтаксис примерно одинаково запутанный.

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Глупые вопросы по С++
« Reply #27 on: 13 June 2023, 15:44:14 »
  • 0
  • 0
Из современных языков пожалуй у Go самый простой синтаксис. Как ни крути, а препроцессор у C ещё менее интуитивен, чем питоновские циклы.
Хотя бы за самостоятельный булев тип.
Это же вроде в C99 уже исправили, а может даже и раньше.
Дві найголовніші помилки українського народу -- зек і зєк.

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29400
  • Карма: +4065/-342
    • View Profile
Re: Глупые вопросы по С++
« Reply #28 on: 13 June 2023, 16:20:32 »
  • 0
  • 0
То, что синтаксис питона на порядок (а то и более чем на порядок) сложнее синтаксиса Си (по крайней мере, без плюсов) - имхо, бесспорный факт.
”бесспорный» для вас? потому что мировое сообщество думает наоборот :negozhe:

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29400
  • Карма: +4065/-342
    • View Profile
Re: Глупые вопросы по С++
« Reply #29 on: 13 June 2023, 16:25:54 »
  • 0
  • 0

Code: [Select]
for _ in range(5):
    ...
Использование подчёркивания неочевидно.
может потому что не надо делать через задницу? Что сложного в while?
Code: [Select]
i = 1
n = 5

# while loop from i = 1 to 5
while i <= n:
    print(i)
    i = i + 1