LINUX.ORG.RU

ЛОР, помоги выбрать ЯП для обучения

 , , , ,


1

3

Часто слышу просьбу научить программированию. Хотя пока я этим не занимаюсь, мне стало интересно, какой ЯП выбрать для введения в программирование.

Вот к каким мыслям я пришёл:

Язык должен наиболее чисто демонстрировать самые основы написания кода.

Не Си и не современные коммерческие языки (Java, C#, Go). Си, хотя примитивный в основе, усложнён из-за окружения, в котором используется. Современные коммерческие языки были созданы для решения проблем индустрии. Проблема общая: я хочу преподавать материал по мере нарастания сложности. Если в языке неизбежно приходится использовать классы или printf, то это затруднит объяснение (не хотелось бы слишком часто говорить «потом узнаешь для чего это нужно»), напугает студента (ему придётся писать код, используя возможности, которые он плохо понимает), создаст неправильное восприятие основ (как будто printf — это какая-то важная часть компьютера или ОС).

В целом, я хочу постепенно наращивать сложность и, если задачу можно решить более простым методом, то выбрать этот метод.

Языки, между которыми я выбираю: Pascal и Python.

Pascal устарел и денег не принесёт (обидно), но это и не является основной целью. Целью является программирование, а не современное окружение.

В частности, я не собираюсь задрачивать студента на Delphi или любой «продвинутый» диалект языка. Это противоречит цели. Я рассчитываю на то, что после должной тренировки “bare bones” нужно перейти на современный язык и это будет легко.

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

Питон мне сложнее оценить, потому что я избегал работы с ним.

Если ограничиться императивным подмножеством, без ассоциативных массивов, классов и мета-классов, list comprehensions, HOF, исключений, то выглядит как альтернатива Паскалю. Хотя меня беспокоит динамическая типизация. Типы — очень важная вещь, хотелось бы чтобы язык помог это донести, а не быть типа «ну да, это важно, но ты забей».

Это все мои мысли.

Что касается практики, то я имел несчастье наблюдать как человек впервые знакомился с программированием, изучая Java на javarush. На это было больно смотреть.

Edit: дальнейшие пояснения по теме:

  • Подробнее про то, почему я считаю, что изучение основ и Паскаль хорошо сочетаются: 1
  • Почему не Си и не ассемблер: 1 2
  • Почему Паскаль: 1 2
  • Почему не Питон: 1
  • Целевая аудитория: 1
  • Почему такая размытая аудитория: 1 2
  • Про важность иерархии: 1


Последнее исправление: kaldeon (всего исправлений: 10)
Ответ на: комментарий от watchcat382

Вот именно что программисту всё равно придется изучать не только язык но и инфраструктуру вокруг него.

Допустим, перед нами первокурсник, который планирует устроиться на работу, после окончания бакалавриата. Т.е. вы предлагаете ему париться сейчас о ерунде, которая ни к программированию не имеет отношения, ни не факт что вообще будет существовавать через четыре года. Отличный план.

всё-таки придется использовать какой-то другой язык

И знание подкоманд npm или как мне установить asdf (и что это вообще), чтобы установить линтер, используемый в этом проекте, мне помогут примерно никак. Я таки настоятельно вам рекомендую сначала занырнуть в эту помоечку, потом подождать, пока забудется, потом снова занырнуть и уже тогда её защищать.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

В любом языке с типизацией можно сделать что-то вроде

struct numegg neweggs(int num); // проверяет от 1 до 3
int numegg_value(struct numegg); // возвращает сохранённое количество
make_fried_eggs(struct numegg eggs, ...);

make_fried_eggs(neweggs(2), ...) // вместо 2 можно поставить 1 или 3, но не другое число
monk ★★★★★
()
Ответ на: комментарий от watchcat382

Кому надо, могут и на питоне так написать. Например класс с проверкой в конструкторе. Надо не всем. Разработчики питона стараются, чтобы каждый мог сделать так, как надо ему.

monk ★★★★★
()
Ответ на: комментарий от watchcat382

А что, есть отладчики которые умеют компилировать? Но можно остановить программу, перебить машинный код в памяти, потом продолжить выполнение.

Common Lisp из классики. Erlang из нынешних. В 1С из отладчика можно вызвать функцию Выполнить, которая выполняет любой код на языке 1С (новую функцию так не сделать, но любой анализ данных без проблем).

Можно данные поменять, потом продолжить исполнение.

Я именно про это. Остановилась у тебя программа, видишь, что у тебя в хеше неправильные данные. Чтобы можно было сделать hsearch(e, ENTER) с правильными данными и продолжить выполнение.

monk ★★★★★
()
Ответ на: комментарий от monk

НДС равный 0

Если важны статьи законов по которым этот ноль появился - то их стоило бы учитывать отдельным признаком,а пихать строковые и числовые значения в одно поле. Это и есть неряшливый стиль программирования и «плохие практики». За такое 1Сников и не любят.

Неплохая идея вместо строки «безНДС» записывать в переменную число -1.

Если Ставка = «БезНДС» Тогда

А если в переменной Ставка находится число(собственно ставка НДС)? Что,будем сравнивать число и строку? Теплое с мягким?

Число ведь не может быть равно строке.

Оно не равно быть не может,а сравниваться не может. Это некорректная операция,как землекопов с лопатами складывать.

Если бы там в строке было не шесть букв,а четыре - то как раз влезло бы в int если в виндовой кодировке представить - четыре байта. И вполне себе число получилось бы.

watchcat382
()
Ответ на: комментарий от alysnix

Можно проверять, что sqr(sin(x)) + sqr(cos(x)) близок к единице. Можно проверить периодичность и известные значения.

monk ★★★★★
()
Ответ на: комментарий от watchcat382

Если важны статьи законов по которым этот ноль появился - то их стоило бы учитывать отдельным признаком,а пихать строковые и числовые значения в одно поле.

Важны не статьи законов, а поля отчётности. Там «0%» и «Без НДС» разные поля. Технически можно просто всегда хранить НДС строкой для святости типизации, но в реальности это тип, хранящий ставки НДС (в актуальной версии бухгалтерии там теперь даже не строка, а ссылка на справочник).

А если в переменной Ставка находится число(собственно ставка НДС)? Что,будем сравнивать число и строку? Теплое с мягким?

А в чём проблема? Строка и число, очевидно, не равны. В Си было бы так

struct vat
{
  unsigned val;
  bool free;
}

И также можно было бы сравнить две структуры на равенство.

Если бы там в строке было не шесть букв,а четыре - то как раз влезло бы в int если в виндовой кодировке представить - четыре байта. И вполне себе число получилось бы.

При чём тут байты вообще? Тип представляет собой набор значений и операций над этими значениями. Даже в Haskell есть функция show, которая в качестве аргумента принимает как числа, так и строки. А тип у неё

show :: Show a => a -> String

Это некорректная операция,как землекопов с лопатами складывать.

В Си можно сложить целое число с вещественным. Это допустимо? Целые числа от вещественных отличаются больше, чем количество землекопов от количества лопат.

monk ★★★★★
()
Ответ на: комментарий от monk

Если Число(А) = 0 Тогда

А там окажется текстовая строка,в лучшем случае «ноль»,что еще можно однозначно к числу преобразовать. Хуже если «БезНДС» которое корректно преобразовать нельзя. Поэтому результатом должен быть «Not a number»,NaN. И операция сравнения с числом к нему не применима именно потому что это «нечисло».

watchcat382
()
Ответ на: комментарий от qulinxao3

ваще Великая Война(wwI теперь) намного странее и сильнее повлияла на цивилизацию чем завершение периода ребалансировки(теперь wwII)

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

ugoday ★★★★★
()
Ответ на: комментарий от watchcat382

А там окажется текстовая строка,в лучшем случае «ноль»,что еще можно однозначно к числу преобразовать.

Это для загрузки числовых данных из Excel. Там человек может ввести число, но Excel сохранить его как строку. Соответственно, допустимые значения только числа и строки, содержащие строковые представления чисел. Если там не строковое представление числа, будет ошибка преобразования.

monk ★★★★★
()
Ответ на: комментарий от monk

все перешли на лучшее решение — 1С.

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

проблема учётных систем не столько учёт, сколько интеграция с Честным знаком, СФР и налоговой.

Вот я именно об этом говорю. И эти проблемы целенаправленно искусственно создаются так чтобы «лучшим решением» были продукты нужных фирм,вот 1С в частности. В двухтысячных тоже самое было например с подключением кассовых аппаратов.

watchcat382
()
Ответ на: комментарий от watchcat382

Кстати, в Аде тоже можно строки и числа в одной переменной хранить.

 type Union (Option : Typelist := Typelist'First) is 
    record
       case Option is
          when String =>
             asString : String
          when Int =>
             asInt : Integer
       end case;
    end record;
monk ★★★★★
()
Ответ на: комментарий от alysnix

а если синус просто возвращает 0?

А это уже аргумент против типов и в защиту тестирования.

проверки на вшивость типа единичного интервала - работают только в крайних случаях,

Понял. Проверка, что число — беззнакоове целое в диапазоне [0, 255] это хорошая, нужная проверка. Языки без такой проверки — дно. А проверка на дипазано [-1,1] это шляпа беспонтовая.

Я как с компилятором разговариваю, право слов, граница С++ это граница ваших мыслей.

если вам нужно почти полное текстирование именно синуса вы долны написать тестовый код что будет вызывать синус, и сравнивать с другим «синусом»,

Для начала, из тригонометрии я могу сделать несколько утверждений, об ограниченности, симметричности и периодичности значений. Теперь, чтобы типизация обеспечивала корректность реализации, нужно описать тип:

sin _ → [-1,1]
sin α == -(sin -α)
sin α = sin α ± 2π
ugoday ★★★★★
()
Ответ на: комментарий от watchcat382

Налоговая меняет, а у 1С уже они готовые сделаны заранее потому что договрились за денежку малую.

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

И все формы бумажек налоговой публиковались как минимум за два месяца до необходимости их сдавать.

Основное преимущество 1С было в открытом коде. Когда ту самую бумажку можно было легко дописать самому, а у конкурентов только молиться на разработчика. И в качестве языка программирования: когда складскую учётную систему с партионным учётом, приходом, расходом, списанием и отчётами по остаткам и движению программист может написать за один день (идёт как тестовое задание на экзамене). На Дельфи я бы такое писал неделю или две, на чём-то ещё где-то месяц.

И эти проблемы целенаправленно искусственно создаются так чтобы «лучшим решением» были продукты нужных фирм,вот 1С в частности.

Интеграция у Контур-Экстерна не хуже. Но у них бухгалтерии нормальной нет.

monk ★★★★★
()
Ответ на: комментарий от watchcat382

Очень неполная система. А где в ней удовольствие от творческой деятельности

А это внешняя система оценки. Что у вас внутри творится неизвестно и неинтересно.

Но она ни разу не обнуляет его достижения.

Обнуляет. Вообразите женщину, которая решает: «дать», «не дать», «дать, но за подарок». Достижение «сделал какую-то непонятную хрень, что это и зачем неясно, но все говорят — круто» может перевесить физические несовершенства, случае бывали, а может и не перевесить. Тут по аналогии с правилами Лопиталя, чтобы перевесить 0 в одном, нужна бесконечность в другом. А так бывает крайне редко.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

А вот инструкция по вождению (также именуемая ПДД) — довольно тонкая книжица.

Тонкая она была лет так пятьдесят назад. С тех пор изрядно растолстела. А «инструкцией по вождению» будет например вот такой учебник:https://www.booksite.ru/fulltext/1075455/index.html Это в дополнение к ПДД. Может и еще какие пособия используются при обучении,я не педагог,не знаю.

И позволяет водить любую машину по любому маршруту.

По одним только ПДД не научишься водить тяжелый грузовик по северному «зимнику». И это только самый очевидный пример.

я не понимаю чего тут можно не понимать.

Преимущества/недостатки по сравнению с примером на Си.

watchcat382
()
Ответ на: комментарий от monk

По доброму завидую вашему терпению, вы буквально как маленькому ребенку втолковываете очевидные вещи.

Дополню, что в соседней стране во времена налоговых войн, бывало что налоговая накладная утром была одной формы, а вечером - другой. И только программисты 1С успевали поменять чтобы предприятия не попадали на штрафы. Это был не лоббизм 1С, а кошмарево бизнеса со стороны государства которое хотело больше денег.

Obezyan
()
Ответ на: комментарий от ugoday

Гениев мало. Ничтожное число. Обсуждая тезис «советские технари — бытовые идиоты и дети малые» их можно не учитывать.

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

watchcat382
()
Ответ на: комментарий от watchcat382

Тонкая она была лет так пятьдесят назад. С тех пор изрядно растолстела.

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

Преимущества/недостатки по сравнению с примером на Си.

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

ugoday ★★★★★
()
Ответ на: комментарий от watchcat382

С этой точки зрения самыми продвинутыми в социальном плане являются бандиты,гопники,мошенники и прочий криминал.

Вы поместили в одну категорию совершенно разные социальные группы. Гопники очевидно неуспешны, от своего гопничества они получают, в основном, проблемы (но окружающие получают их больше).

В сравнении с ними большинство остальных будет

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

Далее, речь про криминал зашла исключительно из-за какого-то вывиха в вашем мозгу. Советских интиллегентов раздело и разуло советское же начальство абсолютно законными методами. Потому что оно было умнее, а интеллект — абсолютное оружие.

ugoday ★★★★★
()
Ответ на: комментарий от Obezyan

По доброму завидую вашему терпению

Долго работал программистом-консультантом. Без терпения там от стресса выгоришь.

бывало что налоговая накладная утром была одной формы, а вечером - другой

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

И только программисты 1С успевали поменять чтобы предприятия не попадали на штрафы.

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

Нынче вон тоже сплошь и рядом: https://1eska.ru/about/news/chto-delat-esli-nalogovaya-otkazyvaetsya-prinyat-dokumenty/

И ещё раз: у конкурентов (турбо-бухгалтер, БЭСТ, бухсофт, инфо-бухгалтер, …) проблем с налоговой отчётностью было не больше, чем у 1С.

Реальное преимущество 1С — только полная открытость конфигураций и наличие достаточно мощного языка для доработки.

monk ★★★★★
()
Ответ на: комментарий от ugoday

вы предлагаете ему париться сейчас о ерунде, которая ни к программированию не имеет отношения

Умение пользоваться компилятором,линкером,системой сборки - как существовало так и существует. И будет. Поэтому это умение надо осваивать.

настоятельно вам рекомендую сначала занырнуть в эту помоечку

Не будет этой помоечки - будет другая,образовавшаяся по схожим принципам. И надо освоить умение в помоечках разбираться. Ибо а кто будет за вас/нас всё это разворачивать и настраивать? Прежде чем начинать работать (кем угодно,хоть в реальном мире хоть в виртуальном) - нужно подготовить и оборудовать рабочее место. К сожалению,это умеют немногие,поэтому у них в компе примерно такой же бардак как на этом верстаке: https://a.d-cd.net/FnHT8YpKDw8F2Zfeqc5zV0285dA-1920.jpg И только у немногих вот такой порядок: https://a.d-cd.net/-Si9gVuN246K8PkNuFkyT02CTJA-1920.jpg

Судя по вашему описанию «инфраструктурной помойки» вокруг TypeScript - как раз похоже что там не нашлось тех кто умеет построить инфраструктуру правильно.

watchcat382
()
Ответ на: комментарий от ugoday

Так преобразование типов в принципе только во время выполнения.

Во время компиляции может быть, если аргумент литерал.

И система типов позволяет единожды проверить ограничения типа при инициализации, не при вызове каждой функции с этим типом.

monk ★★★★★
()
Ответ на: комментарий от watchcat382

Умение пользоваться компилятором,линкером,системой сборки - как существовало так и существует

Так не существует уменя пользоваться компилятором вообще. Даже в рамках одного языка у них у всех разные опции и свои приколы с флагами. А как знания чем -O2 и -O3 в gcc различаются перевести в умение вычислить правильное значение -Xmx в java, можно и сразу не спрашивать. Никак они не переносятся.

Не будет этой помоечки - будет другая

Или не будет. Набор приседаний для вкатывания в проект на TypeScript и Go будет существенно разный. А мы, напоминаю, говорим об учебном языке, где всех этих приседаний вообще быть не должно.

ugoday ★★★★★
()
Последнее исправление: ugoday (всего исправлений: 1)
Ответ на: комментарий от monk

система типов позволяет единожды проверить ограничения типа при инициализации, не при вызове каждой функции с этим типом.

Вот это — едниственно полезное свойство.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Вот это — едниственно полезное свойство.

И документирование. Документирование даже важнее.

В Си++ шаблоны, фактически, поломали документирование типами. Приходится или писать портянку в комментарии или «авось пользователь как-то разберётся».

monk ★★★★★
()
Ответ на: комментарий от monk

Долго работал программистом-консультантом. Без терпения там от стресса выгоришь.

Это чувствуется по манере общения. Сам долго проработал в комплексной автоматизации предприятий, приходилось писать конфигурации на 1С и иногда сопровождать типовые, но бог миловал и общение происходило на уровне главбуха/техдира, изредко «девочек из бухгалтерии».

Публиковалось всегда заранее. Просто все, как всегда, делали всё в последний день.

Я про соседнюю страну. Там кабмин реально работал в режиме бешенного принтера в кризисе 2008го.

И ещё раз: у конкурентов (турбо-бухгалтер, БЭСТ, бухсофт, инфо-бухгалтер, …) проблем с налоговой отчётностью было не больше, чем у 1С.

Я еще помню рыдающих главбухов на Парусе. Успевали их перевести на 1С до начала анальных кар.

Реальное преимущество 1С — только полная открытость конфигураций и наличие достаточно мощного языка для доработки.

Я с вами полностью согласен. (Гибкость + открытость) * относительная простота.

Obezyan
()
Ответ на: комментарий от ugoday

дело не столько в уме а в следованию «алтруистическим» ограничениям

принцип «умри ты сегодня я завтра» не способствует длинной воли

т/е кидок конца 80ых был не неизбежен при том что симптомы надвигающегося были очевидно тем же :

Письмо А. Д. Сахарова, В. Ф. Турчина и Р. А. Медведева Генеральному секретарю ЦК КПСС Л. И. Брежневу, председателю Совета Министров СССР А. Н. Косыгину и председателю Президиума Верховного Совета СССР Н. В. Подгорному

очень забавный артефакт

qulinxao3 ★★
()
Ответ на: комментарий от monk

«0%» и «Без НДС» разные поля. Технически можно просто всегда хранить НДС строкой для святости типизации

Но зачем, есть же union types. string | number и все дела. Конечно, в рантайме придётся проверки делать — а кому сейчас легко.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от qulinxao3

дело не столько в уме а в следованию «алтруистическим» ограничениям

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

ugoday ★★★★★
()

Я всё понял. Эта дискуссия открыла мне глаза. Есть программисты-христиане, а есть программисты-иудомусульмане. У программистов-христиан мозг устроен декларативно и работают они в декларативном стиле с программами в виде системы целей, приоритетов и ограничений. Например:

Блаженны нищие духом, ибо ваше есть Царствие Божие.
Блаженны алчущие ныне, ибо насытитесь.
Блаженны плачущие ныне, ибо воссмеетесь.
Блаженны вы, когда возненавидят вас люди и когда отлучат вас, и будут поносить, и пронесут имя ваше, как бесчестное, за Сына Человеческого. Возрадуйтесь в тот день и возвеселитесь, ибо велика вам награда на небесах.

Не то иудомусульмане. У них всё чётко, точно, последовательно. Намаз совершают так: делай раз, делай два, делай три …

От того и войны меж нами религиозные.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Вот только мы скорее в лоре Вахи. Еретики, слаанешисты, Рич Хикки не предавал, PHP стоит! Вот это вот все.

Obezyan
()
Ответ на: комментарий от monk

В Си можно сложить целое число с вещественным. Это допустимо?

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

При чём тут байты вообще?

При том,что одни и те же четыре байта в Си могут быть восприняты и как строка и как число. Еще один способ выстрелить себе в ногу в этом языке.

Строка и число, очевидно, не равны.

Они не «не равны»,они не могут сравниваться,это некорректная операция. Также как теплое с мягким. Или значение тока с значением напряжения,хотя и то и другое - числа. Вот за такой стиль профессиональные программисты и не любят 1С.

watchcat382
()
Ответ на: комментарий от monk

Если там не строковое представление числа, будет ошибка преобразования.

Вот это - правильное поведение.

watchcat382
()
Ответ на: комментарий от monk

Кстати, в Аде тоже можно строки и числа в одной переменной хранить.

В Аде вообще очень много чего можно сделать. Но это надо тщательно прописать в явном виде чтобы сказать компилятору(ну и тем кто будет читать ваш код) что вы хотите сделать именно это. Мало ли кому какие странности потребуются. Если вы описали вот такой странный тип - значит вы знаете что делаете,компилятор не будет препятствовать. Это и есть умение пользоваться системой типов - то есть выразить в ней то что требуется.

watchcat382
()
Ответ на: комментарий от ugoday

Что у вас внутри творится неизвестно и неинтересно.

Но человеку-то важно именно что у него внутри,внутреннее состояние. Человек богатый и известный но несчастный - не такое уж особо редкое явление.

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

watchcat382
()
Ответ на: комментарий от monk

Кстати, в Аде тоже можно строки и числа в одной переменной хранить.

тип называется - вариантная запись, идет еще с алголов, как минимум, насколько я помню.

в плюсах аналоги - std::variant (неожиданно). в чистой сишечке - union, но тут не хранится тег. в вариантной записи тег типа хранится. и есть код рантайм проверок тега.

alysnix ★★★
()
Ответ на: комментарий от ugoday

Никто не хотел воевать. Война была неизбежна.

Неизбежно может быть землятресение. Или извержение вулкана. Или падение астероида. То есть то,на что человек повлиять принципиально не в силах. А войны устраивают именно сами люди,та их часть которым по тем или иным причинам хочется повоевать. Например они думают что в результате победоносной войны станут жить лучше. Они не понимают что если кто лучше жить и станет то не сами вояки,а политики,убедившие их идти на фронт.

watchcat382
()
Ответ на: комментарий от watchcat382

Но человеку-то важно именно что у него внутри,внутреннее состояние

Это сколько угодно, внутри себя человек может считать себя кем угодно и оценивать как угодно. Но если его самооценка радикально расходится с мнением окружающих, то возможны очень неприятные сюрпризы не без последствий для психики.

ugoday ★★★★★
()
Ответ на: комментарий от watchcat382

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

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Вы поместили в одну категорию совершенно разные социальные группы.

А кто сказал что успешна может быть только одна социальная группа?

Гопники очевидно неуспешны, от своего гопничества они получают, в основном, проблемы

Не слышал чтобы юноша из социальной группы «гопники» был обделен женским вниманием. А вот в категории «программисты» таких немало. Так и кто тут успешный,а кто нет? Смотря по какой шкале оценивать.

Советских интиллегентов раздело и разуло советское же начальство абсолютно законными методами.

Когда законы пишет криминал и он же следит за их исполнением - любой беспредел будет «законным».

Потому что оно было умнее, а интеллект — абсолютное оружие.

Один умеет раздевать и разувать,а другой умеет решать математические задачи,которые никто в мире не мог решить десятки лет. И кто из этих двоих умнее,чей интеллект выше?

Понятно при личной встрече в тёмной подворотне, представители социального дна у вас выиграют.

Они и в суде выйграют если занесут судье денег или просто запугают его и/или свидетелей. Судья и свидетелей ведь по одним с ними темным переулкам ходят.Высокого интеллекта такие методы влияния на исполнение законов не требуют,как показали 90е годы.

watchcat382
()
Ответ на: комментарий от monk

И система типов позволяет единожды проверить ограничения типа при инициализации, не при вызове каждой функции с этим типом.

Это не везде так. Ада например проверят допустимый диапазон значений при каждом вызове. Если у функции тип параметра ограничен диапазоном -1..1 то передать туда 2 не получится,произойдет исключение. Причем не падение программы «мордой в салат»,а именно исключение,которое при желании можно обработать и сделать что-то разумное в данной ситуации. Если не обработать то да,аварийный останов,но более так сказать «культурный» чем какой-нибудь сишный segmentation fault.

watchcat382
()
Ответ на: комментарий от watchcat382

в си++ вы просто пишете тип с рантайм проверкой присваивания в него. и это целиком и полностью покрывает все эти адские встроенные проверки диапазонов. потому что проверить можно все.

в плюсах более общее решение, чем в аде, с той же эффективностью.

alysnix ★★★
()
Ответ на: комментарий от watchcat382

Не слышал …

Могучий аргумент.

А вот в категории «программисты» таких немало.

Вспоминаем правило: «перемножаем характеристики, если где-то ноль, то общий результат ноль».

Когда законы пишет криминал

Вы употребляете какое-то свое значение слова «криминал». Поведайте о нём, уж будьте добры.

Один умеет раздевать и разувать,а другой умеет решать математические задачи,которые никто в мире не мог решить десятки лет. И кто из этих двоих умнее,чей интеллект выше?

У первого конечно. Это ещё древним было известно:

      Одушевленную медь пусть куют другие нежнее,
      Также из мрамора пусть живые лики выводят,
      Тяжбы лучше ведут, а также неба движенья
      Тростию лучше чертят и восход светил возвещают.
      Ты же народами править, о Римлянин, властию помни -
      Вот искусства твои - утверждать обычаи мира;
      Покоренных щадить и сражать непокорных.

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

Они и в суде выйграют если занесут судье денег

Не любите проигрывать? Не проигрывайте.

,как показали 90е годы.

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

Я, к слову, никого не осуждаю. Технари не виноваты, что выросли такими. По крайней мере не они одни виноваты. Но это не важно, когда обсуждается результат.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

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

alysnix ★★★
()
Ответ на: комментарий от ugoday

Так не существует уменя пользоваться компилятором вообще.

Не согласен.

Даже в рамках одного языка у них у всех разные опции и свои приколы с флагами.

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

знания чем -O2 и -O3 в gcc различаются перевести

Это можно в документации прочитать если уже знаешь о самом существовании флагов у компилятора. Изучавший Питон знать о них не будет. Но документация это обычно справочник,а не учебник. Хотя мне самому в начале 90х и приходилось изучать языки по справочникам - но это было не слишком эффективно по затратам времени и происходило только от отсутствия доступа к учебникам. Сейчас мало кто может представить себе что книги могли быть дефицитом и скачать их было невозможно,надо было по библиотекам бегать. И не в каждой первой нужное найдется.

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

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

В качестве аналогии - группы по изучению английского. Не знающих совсем ничего - сначала учат My name is Vasya. Более продвинутые читают и разбирают английскую классическую литературу в оригинале чтобы погрузиться в контекст англоязычной культуры и знать особености как что по-английски сказать(есть различия с русской языковой традицией).

watchcat382
()
Ответ на: комментарий от monk

Реальное преимущество 1С — только полная открытость конфигураций и наличие достаточно мощного языка для доработки.

Я пожалуй воздержусь от обсуждения 1С так как мои представления о нем устарели лет на двадцать,да и тогда «программистом 1С» я не был,только наблюдал за процессом доработки и эксплуатации. Тогда это был мрак и ужас. Вполне допускаю что сейчас уже всё хорошо.

watchcat382
()
Ограничение на отправку комментариев: