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

А бесплатному можно подумать выгодно.

Бесплатному выгодно, чтобы вы вообще не болели, потому в СССР развивали здравоохранение в ущерб медицине, а на Западе СТРАХОВЫМ компаниях ПРИШЛОСЬ создавать жесткие протоколы оказания медицинской помощи, вне рамок которых они не оплачивают услуги врачей. И то находятся ловкачи, оказывающие ненужные услуги и получающие за это денежку.

У платных хотябы условия обитания в больницах человеческие.

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

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

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

наплевательство на экологию в Китае и качество воздуха в Пекине.

Это и есть не мочь в логику. В Германии экология улучшилась, потому что вредные производства перенесли из Германии в Китай. Как это помогло экологии ПЛАНЕТЫ? С учётом необходимости везти товар из Китая в Германию?

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

Вообще-то в классическом программировании тип это именно свойство переменной.

Только тип переменной определяется как возможные значения переменной и возможные действия с ними. А не «выберите строку или число в разрядности 8/16/32/64 или структуру или массив».

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

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

Сравнивая программы на Lisp/Smalltalk против C, в C незамеченных вовремя ошибок, приведших к ущербу на порядок больше.

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

ПЛАТНОМУ врачу совершенно не выгодно, чтобы больной поправился … Бесплатному выгодно, чтобы вы вообще не болели… . [на Западе] находятся ловкачи, оказывающие ненужные услуги и получающие за это денежку.

Это не медицина, а мошенничество. Любая платная услуга может стать оружием в руках мошенника, но вы же не будете из-за этого мешать людям получать оплату за честно оказанные услуги?

Ещё хотелось бы, чтобы вы не оскорбляли целую профессию выводами уровня «незнайка познаёт мир».

в СССР развивали здравоохранение в ущерб медицине

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

Слова «развитие» и «ущерб», пардон, не описывают всю степень несправедливости.

«Бесплатное» здравоохранение и медицина, во имя красивой фразы «общественное благополучие», разрушают частные права, в нашем случае врачей. Но без врача люди даже подорожник не смогут правильно приложить, о чём свидетельствует вопиющее состояние медицины в регионах РФ. На мой взгляд, это куда более красноречивый факт, чем ваше отношение к платным клиентам как к взяточникам, а к врачам как к мошенникам. Выгоду получают только те, кто побольше сможет уместить в свой план. К сожалению, их выдаваемая благонамеренность до сих пор ослепляет людей.

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

«Бесплатное» здравоохранение и медицина

И тут мы вспоминаем о существовании бесплатной медицины в Британии и Канаде, а так же социального страхования в США…

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

Я знаю историю штатов с 1776 года, пока ничего не забыл.

kaldeon
() автор топика
Ответ на: комментарий от annulen

Надёжность нужна только там, где за неё платят

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

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

Лучше с человеческой природой не экспериментировать.

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

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

Дальше можно не продолжать.

И напрасно. Даже директора завода могли вызвать на партсобрание и как следует там пропесочить если заслужил. И хрен он чего сделает если там заседали уважаемые народом аксакалы,еще Ленина живьем видевшие.

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

Это помещик Ленин

Помещик это от слова «поместье». Где оно было у Ленина,какие доходы он с него получал? Его отец был госчиновником от образования, закончил университет,был челоеком весьма прогрессивным,сторонником всеобщего образования. Дед был из мещан, бывший крепостной крестьянин. Я ведь советскую школу застал,а там биографии видных партийных и политических деятелей изучались.

у нас за народные массы теперь считается?

Он там далеко не один был. Почитайте биографии известных советских политических деятелей - там и «из низов» было немало. Вспомните например происхождение Сталина.

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

Это ели у вас есть деньги на то

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

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

То есть по факту те же самые платные медуслуги. Просто оплату узаконили.

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

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

Как это помогло экологии ПЛАНЕТЫ?

Причем здесь планета? Немцев интересует экология Германии. Китайцам они свои «зеленые» требования не навязывают.

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

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

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

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

в C незамеченных вовремя ошибок, приведших к ущербу на порядок больше.

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

Заодно спрошу а где вы видели неучебные программы на Лиспе сколько-нибудь заметного размера,хотябы несколько сотен килобайтов исходников? Если вы смогли сравнить их с программами на Си - значит они где-то есть?

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

вспоминаем о существовании бесплатной медицины в Британии и Канаде

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

социального страхования в США…

Страховая медицина это не бесплатная. Это те,у кого здоровье хорошее, платят за тех у кого оно плохое(нередко плохое по собственной вине).

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

-1

вы ведь не Шультайс Никита https://www.youtube.com/watch?v=QfG3OaAbZrs ?

0. печаль либертарианства в том что оно «не замечает» что единственное «либертариански образованное как ассоциация нижеподписавшихся » в 1776 действиет скорее по принципы «что позволенно Юпитеру не позволено быку» - проблема «естестевенной монополии» куда деватся :)

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

проблема пропаганды - мешает в долгую

протестанты были более геноцидны чем инквизиторы

средние века более гумманы чем «а хорошая ли примета увидет пса бегущего с человечьей кистью в пасти бегущему на встречу когда идёшь на обед к другу » современники

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

ээээ батенька интернет это и архив как исторический так и текущий

лиспа много - вон ща кложа форсится дорвавшимися до топства

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

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

Это не число, потом строка. Это, например, тип СтавкаНДС, содержащий числа 9, 18, 10, 20, 0 и строку «БезНДС».

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

Или тип, содержащий значения, имеющие строковое представление (числа, строки, массивы, … включены, функции, замыкания, …. не включены).

Вместо того чтобы сходить в начало программы и ознакомиться с чем он имеет дело

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

Типы выглядят где-то так:

result-type -- a sequence type specifier, or nil.

function---a function designator. function must take as many arguments as there are sequences.

sequence---a proper sequence.

result---if result-type is a type specifier other than nil, then a sequence of the type it denotes; otherwise (if the result-type is nil), nil.

или так

// Возвращает ссылку на вариант отчета.
//
// Параметры:
//  Отчет - СправочникСсылка.ИдентификаторыОбъектовРасширений
//        - СправочникСсылка.ИдентификаторыОбъектовМетаданных
//        - СправочникСсылка.ДополнительныеОтчетыИОбработки
//        - Строка - ссылка на отчет или полное имя внешнего отчета.
//  КлючВарианта - Строка - имя варианта отчета.
//
// Возвращаемое значение:
//  СправочникСсылка.ВариантыОтчетов, Неопределено - вариант отчета, 
//          либо Неопределено, если отчет отсутствует или недоступен по правам.
//
Функция ВариантОтчета(Отчет, КлючВарианта) Экспорт

А статическая типизация не всегда позволяет ознакомиться. Можете взять для примера любой шаблон Си++.

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

Заодно спрошу а где вы видели неучебные программы на Лиспе сколько-нибудь заметного размера,хотябы несколько сотен килобайтов исходников?

CLIM, Maxima, …

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

Это не число, потом строка. Это, например, тип СтавкаНДС

Так объявите этот тип в начале программы и я не буду иметь никаких претензий. Вон в Аде для вас вариантные записи предусмотрены.

Моя претензия не к существованию каких-то особо хитрых типов (ну мало ли кому какие надо),а к отсутствию объявления этих типов перед использованием. Увидел программист в чужом коде что переменной число присвоили - откуда он должен узнать является ли эта переменная числовым типом или хитрым комбинированным типом вроде вашей СтавкиНДС? Логично его желание посмотреть где тип объявлен и как.

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

утиность

зы : @новомодноУЖОустаревшие@ концепты в СяшкоПлюсах

в аде вроде тоже было особое слово для надтипов - но не такое шыршее как пэкэдж

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

изначальная идея А.КЕЯ что Субьект(в его терминах Обьект как клетка) сама решает как парсить от того и запись Субьект Сообщение

а не Слуга(ПолеДеятельности)

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

Причем здесь планета?

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

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

Так объявите этот тип в начале программы и я не буду иметь никаких претензий. Вон в Аде для вас вариантные записи предусмотрены.

Так он обычно и объявлен в комментарии. В языках со статической типизацией (Haskell, C++) тоже часто не обязательно тип декларировать: выведется из использования.

В коротких или одноразовых программах смысла объявлять тип нет.

Вот функция:

compose f g x = f (g x)

Точно станет понятнее, если увидишь тип

compose :: (t1 -> t2) -> (t3 -> t1) -> t3 -> t2

?

Или что

fix f = f (fix f)

имеет тип (t -> t) -> t.

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

там вопросо-ответ 7 летней выдержки частично отвечающий на СтартовыйПост

за 7 лет дрейф явно не .

Юпитер - Невидимая - Смит - Отцы - Основатели -17(76)

а кто ?

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

ну это же чистый обращённый гудвил

отличающее чистых от остальные

чистые собирают с остальных взносы на помощь очередной «Африке» али ремонт провала

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

Ютуб в РФ не открывается и у меня нет механизма обхода.

Отцы находились под большим влиянием Локка, чем Смита.

Монополии возникают не из «естества», а при поддержке государства. В свободном рынке монополии невозможны. Конкурентное преимущество ≠ монополия.

Я думаю, лучше продолжить обсуждать эту тему в личке или толксах, а то мы нарушаем 4.1 и 5.4. Можешь написать на kaldeon@yahoo.com.

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

мы в разных РФ?!

государство и есть монополия :)

когда акционеры отвязывались от Звёздной Палаты много чая приготовили

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

свободный рынок навязывается навязывателем :)

иначе потлачи и прочие «долг первые 5тыщь» Грабера

не не не товаришь субальтерн

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

Монополии возникают не из «естества», а при поддержке государства. В свободном рынке монополии невозможны. Конкурентное преимущество ≠ монополия.

???

Эффект масштаба позволяет легко гасить конкурентов. Лишь государство является ограничителем монополий (вводя всякие привилегии для малого бизнеса).

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

Кстати, к языкам программирования это тоже относится. Ada не может победить C именно из-за эффекта масштаба. При равенстве игроков быстро происходит такая же монополизация (любой язык программирования, который занял 51% быстро вытесняет всех конкурентов, так как у них меньше библиотек, а значит их использование менее выгодно). Чтобы победить монополиста необходимо внешнее преимущество: Java, Go, Swift, C# появились только потому, что корпорации были согласны вбухать кучу денег, чтобы преодолеть монопольный разрыв.

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

c адой печально ещё и то что ДоД пронизан крутящимися дверми что спэйсX vs NASA показал

так то ада(впрочем были и лучше жестяного варианты) - даже Ишбоа имхо оказался ибо у Франции постояные тёрки в натке - а бенюлуксо0швейцарское очередное ВИРТОвское какое - мало интереса для всех причастных

такая загагулина

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

Я вас умоляю, в NYC это тоже понадобится.
Вот, весь 19-й век, начало 20-го США и Россия были вроде союзниками.
Потом, правда, они топили за нашего царя в 17-20 гг. Потом их отпустило.
Потом ВОВ, опять же вроде вместе, против зла.
Потом пришел Truman, и сказал, боюсь-боюсь, «русские идут», ховайтесь. Ничего не понимаю. Кто их покусал?

novus ★☆
()
Последнее исправление: novus (всего исправлений: 6)
Ответ на: комментарий от novus

Ничего не понимаю.

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

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

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

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

«Эффект масштаба» = конкурентное преимущество. Майкрософт может купить мелкую компанию, но мелкая компания может отказаться. Но если Майкрософт будет давить, угрозами или более «цивилизованными» схемами (например, кампанией по очернению), нарушая права мелкой компании, возможно при поддержке государства, то это уже нарушение прав и государство должно это остановить. Но только когда есть доказательства или угроза/опасность, а не заранее.

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

kaldeon
() автор топика
Ответ на: комментарий от novus

дык провернуть старушку европку а до «91» увэсь мыр в чятыре руцы

переход на EC-совместимое это от ненависти к вражине ага

как и СМ-серия :)

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

без «государства» не возможен «свободный рынок»

Не уверен, этим утверждением вы соглашаетесь со мной или наоборот, но я согласен с ним.

kaldeon
() автор топика
Ответ на: комментарий от novus

ох жеж лапти :

https://en.wikipedia.org/wiki/Imagined_community

Michael Mann, The Sources of Social Power, Vol. I: A History of Power from the Beginning to A.D. 1760. Cambridge: Cambridge University Press, 1986; Michael Mann, The Sources of Social Power, Vol. II: The Rise of Classes and Nation-States, 1760-1914. Cambridge: Cambridge University Press, 1993; Michael Mann, The Sources of Social Power Vol. 3: Global Empires and Revolution, 1890–1945. New York: Cambridge University Press, 2012; Michael Mann, The Sources of Social Power Vol. 4: Globalizations, 1945–2011. New York: Cambridge University Press, 2013.

так что в дарке полно государства

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

должен задуматься

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

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

а при поддержке государства. В свободном рынке монополии невозможны.

калейдоскопия?

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

Но если Майкрософт будет давить, угрозами или более «цивилизованными» схемами (например, кампанией по очернению), нарушая права мелкой компании, возможно при поддержке государства, то это уже нарушение прав и государство должно это остановить.

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

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

Это помещик Ленин

Помещик это от слова «поместье». Где оно было у Ленина,какие доходы он с него получал? Его отец был госчиновником от образования, закончил университет,был челоеком весьма прогрессивным,сторонником всеобщего образования. Дед был из мещан, бывший крепостной крестьянин.

Первая ссылка Владимира Ленина была в 1887 году в Казанской губернии. За активное участие в сходке и революционное выступление он был исключён из Казанского университета и выслан в село Кокушкино Лаишевского уезда (ныне — Пестречинский район). В доме своего деда Александра Бланка он прожил почти год.

Ульянов, Илья Николаевич:

В 1877 году получил чин действительного статского советника (IV класс Табели о рангах), после 1856 года дававший право на потомственное дворянство ему самому, супруге и всем детям…

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