LINUX.ORG.RU

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

 , , ,


0

4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

сама идея композиции конечно имеет смысл теоретический, но куда меньше - практический

Конечно, конечно. Хочешь банан? %)

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

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

Пайпами в шелле тоже не пользуешься? Исключительно переменными и циклами?

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

типизация средствами ЯП нужна прежде всего рукожопам,

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

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

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

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

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

любой студент-скриптушник сделает за неделю то, на что они годы тратят.

Ну так принцип «тяп-ляп и в продакшн» известен достаточно давно. Сергей Павлович Королёв когда-то сказал: «Можно сделать быстро, но плохо, а можно — медленно, но хорошо. Через некоторое время все забудут, что было быстро, но будут помнить, что было плохо.» Метод быстрого тяп-ляп хорош при изготовлении игрушек,но когда таким методом пытаются делать самолёты то у Боинга начинаются большие проблемы.

watchcat382
()

Шла 25 страница срача, но никто так и не сподобился представить учебное пособие по которому планируется обучать. У меня лично в голове крутится две книги:

  1. Sicp для начинающих оно примерно никак не подойдёт.

  2. Столяров в трёх томах. Напишет том об алгоритмах и структурах данных - можно будет в рамку и на стенку сто процентов.

Какие ваши предложения? Так же хотелось бы услышать @croco, мало ли вдруг снизойдёт?

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

Sicp для начинающих оно примерно никак не подойдёт.

С чего бы это? Какие по вашему необходимые знания нужно иметь, чтобы приступить к SICP?

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

сама идея композиции конечно имеет смысл теоретический, но куда меньше - практический

Конечно, конечно.

А я соглашусь с предидущим оратором - в стандарт С++(и не только его) запихнуто много такого,что нужно лишь теоретикам от программирования для того чтобы потешить собственное эго,типа «а я вот еще и так могу». Это например в математике уместно - хвастаться изобретением новых способов решения какой-нибудь задачи,всё более заумных. А на практике в абсолютном большинстве случаев программа должна быть написана просто и понятно для специалиста с вполне средней квалификацией,а не только олимпиадникам каким-нибудь или выпускникам топовых университетов мира. Вот и с теми же композициями - большинство рядовых программистов даже не представляет зачем они нужны,а из оставшихся большая часть не умеет использовать их правильно. А неправильное/неуместное использование приводит к ожирению софта,тормозам и глюкам. Что мы так сказать во всей красе вокруг и наблюдаем. Тормоза плюсового кода тут кстати только что аж с цифрами были продемонстрированы.

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

С чего бы это? Какие по вашему необходимые знания нужно иметь, чтобы приступить к SICP?

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

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

Университетский курс дискретки.

Зачем? Какое упражнение, для простоты ограничимся первыми тремя главами, этого требует?

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

Какие по вашему необходимые знания нужно иметь, чтобы приступить к SICP?

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

Иначе это будет навевающая сон книга о каких-то непонятных абстрактных вещах — примерно как классическая литература типа Войны и Мира или Анны Карениной для сферического школьника в вакууме, который тупо слишком молод и поэтому ему не с чем соотнести написанное в своём куцем опыте.

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

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

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

давно «с детсва» не играл в шашки

ща пришлось

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

решает шашки

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

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

ох ёж Баур Гооз двухтомник Информатика - вроде как универский курс но фактически доступно для школьника 3-5 классов (не для 100%)

там и рекурсия и картинки Драсе и прочая хурма -

кста было больше проблем с мат индукцией в старших классах :)

qulinxao3 ★★
()

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

Почему не Python: [1]

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

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

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

З.Ы.

https://www.youtube.com/watch?v=KdZ4HF1SrFs&list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0&index=1 - МИФИ, Тимофей Хирьянов, «алгоритмы и структуры данных на python3»

В общем, на этом тему обучения программированию можно закрывать. Идеальные лекции, ИМХО

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

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

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

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

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

По крайней мере до понимания рекурсии среднему школьнику, как до Китая раком.

А много ли задач где решение без рекурскии будет неприемлимо медленнее или критически толще чем решение с рекурсией? Я в данном случае имею в виду работу обычного среднего программиста а не высокую науку или спортивно-олимпиадное программирование.

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

А рекурсия - потенциально весьма не безопасная штука при неумелом или неуместном использовании.

Потому что как математику и алгебру преподают в школе это ни в какие ворота.

Математика в школе - это просто гимнастика для ума. Ну и повод чем-то занять недорослей. Вот этот анекдот про армию,но он и к школе вполне применим: https://www.anekdot.ru/id/-10082553/ Детский труд у нас использовать запрещает закон,но если «детишек» старшего школьного возраста оставить бездельничать то они будут создавать проблемы. Пусть уж лучше математикой занимаются под присмотром.

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

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

самомодифицирующийся код самое лучшее что случилось

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

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

никто так и не сподобился представить учебное пособие

Учитель @kaldeon и свой учебный план не представил Вам на утверждение. И с выбором учебного пособия в этой теме помочь не просил.

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

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

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

Выбирай из того, что актуально.

Сегодня актуально, завтра все забыли. См. Паскаль, Делфи, Пёрл, Руби, Фортран, пр.

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

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

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

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

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

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

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

Вы не представляете, но профессиональные переводчики-лингвисты начинают с мёртвых языков. И учат не менее 2х живых, причём из разных языковых групп. Минимум 3 и это даже ещё не институт, а языковая школа.

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

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

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

P.P.S. Подход к обучению программированию как к дрессировке собак объясняет, отчего индустрии не хватило пятнадцати лет для перехода с python2 на python3.

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

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

Но латынь. А не язык мауи или пигмеев конго

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

Но зачем специально выбирать бесполезный язык?

Почему бесполезный? Выбирают наиболее НАГЛЯДНЫЙ язык, польза которого наглядно и просто показать обучающемуся те или иные основы программирования. Хотя бы разницу между оператором присваивания в программировании и «равно» в математике (которое, вообще-то, надо рассматривать как перегружаемый оператор, поскольку контекстно зависимо). Разницу между числом в математике и любыми числовыми типами в ЯП. Разницу между алгоритмом и программой.

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

Только этот язык - латынь, общий для всех европейский

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

И Паскаль, наследник Алгола, таки тоже является предком для, ну, того же Питона. Или Луа.

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

интерпретатор этого самого питона напишет не особо напрягаясь в виде курсового проекта

Увы, но уже нет, Питон стремиться переплюнуть PL/I и C++ вместе взятых по «богатству» встроенных возможностей.

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

было больше проблем с мат индукцией в старших классах

В школах без углублённой математики матиндукцию не проходят.

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

Тогда бы проталкивали не предельно понятную Аду

Каждый раз, как вы топите за Аду, мне вспоминается древний анекдот: «Если вы написали программу и компилятор с первого прохода не нашёл в ней ошибок, сообщите об этом системному администратору. Он исправит ошибки в компиляторе». Богатство возможностей Ады – это потуги разработчиков компилятора Ады. Но они люди и тоже могут ошибаться.

Хаскель

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

Лисп

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

Учебник – это вельми специфический жанр и мало кто умеет в него.

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

А много ли задач где решение без рекурскии будет неприемлимо медленнее или критически толще чем решение с рекурсией?

Братан, ты Sicp почитай, там все начинается с: а давайте найдём квадратный корень методом рекурсии. И далее продолжается в том же духе.

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

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

неправильно? Потому, что про оберон все услышат первый и последний раз в жизни. И работать с ним никогда не будут

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

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

Нет и не будет актуальных модулей и фреймворков.

Когда я начинал учиться программированию три с лишним десятка лет назад, «актуальным» считались инструменты о которых сейчас большинство действующих программистов даже не слышали. Например считалось актуальным изучение clipper,по нему даже курсы можно было при желании найти примерно такие как сейчас «питон за месяц». И где сейчас тот clipper? Я еще тогда удивлялся зачем писать на нём если можно на любом стандартизованном универсальном языке.

Студенты тупо потеряют время

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

Тимофей Хирьянов, «алгоритмы и структуры данных на python3» Идеальные лекции, ИМХО

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

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

Обычно это решается применением правила 80/20, обрезаем ненужное, что получилось называем «подмножеством питона» и делаем вид, что так и надо, так и было задумано.

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

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

Неправда ваша. Чистая функциональная программа на хаскеле является чистой и функциональной. Она получает ввод в виде параметров и возвращает значение в качестве результата. Всё красиво сделано.

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

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

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

Полностью с вами согласен! Разве что дополню - в каком-нибудь ПТУ при заводе уместно учить поступивших туда тем задачам которые решаются именно на этом заводе. И потом брать их на работу в качестве младшего технического персонала. В СССР так и было - в ПТУ учили на «оператора ЭВМ»,а в институтах на «инженера-программиста». Но выучиться на инженера не у всех получается,к тому же это весьма долго и не особо выгодно в денежном смысле потому что пять лет придется во всём себя ограничивать пока «дрессированные» будут зашибать деньгу на своем фреймворке до тех пор пока он не будет объявлен «устаревшим».

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

Сегодня актуально, завтра все забыли. См. Паскаль, Делфи, Пёрл, Руби, Фортран, пр.

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

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

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

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

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

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

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

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

Для обучения важны способности языка иллюстрировать изучаемое. Как проиллюстрировать процесс компиляции и линковки на Питоне? Или считаете что об этих процесса программист знать не должен? Учебный язык - он для учебы,а не для того чтобы на нем программы управления для АЭС писать. Во всех областях деятельности существуют различные учебные пособия и тренировочное снаряжение. Даже внезапно станки учебные существуют,ТВ-4 например (раньше в школах в кабинетах труда стояли,не знаю как сейчас).

Типа латынь давно устарела

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

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

Но зачем специально выбирать бесполезный язык?

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

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

применением правила 80/20, обрезаем ненужное, что получилось называем…

…Паскалем, не ипаем никому мозг и сразу используем FreePasca. Зачем изобретать Паскаль, если он уже давно изобретён гораздо более умными человеком?!

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

возвращает значение в качестве результата

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

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

Зачем изобретать Паскаль, если он уже давно изобретён гораздо более умными человеком?!

Затем, что подумав ещё немного, этот умный человек решил исправить недостатки Паскаля и придумал Модулу и Оберон.

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

Куда возвращает-то?

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

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

Знание латыни не переносится на знание венгерского

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

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

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

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

Совершенно верно.

А один толковый финский старшекурсник,считай почти инженер, вон целое ядро ОС в качестве курсовика написал.

отчего индустрии не хватило пятнадцати лет для перехода с python2 на python3.

Так правильно там выше по теме было подмечено - ИНДУСтрия же :-) Вот там как раз дрессировка программистов отлично налажена :)

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

Но латынь. А не язык мауи или пигмеев конго

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

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

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

этот умный человек решил исправить недостатки Паскаля и придумал Модулу и Оберон.

Которые вообще не взлетели, потому что исправляемые «недостатки» Паскаля никому не мешали, а не исправляемые оказались неизлечимыми. Если же начать их исправлять, то получим ну… Аду. Или C++.

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

Знание «внутреннего устройства» хотябы одного языка хорошо способствует изучение других языков.

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

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

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

комилятор это функция

Нет.

Это чистая функция, для одного и того же входа, будет один и тот же выход.

При одних и тех же флагах компиляции. Флаг компиляции не часть программы и в определённом смысле не часть компилятора.

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

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

Это уже «количественный» вопрос. Нормально обученный инженер знает как реализовать любую из встроенных в Питон возможностей. Команда из таких инженеров и весь Питон написать может. А вот команда выпускников онлайн-курсов «программист на питоне за N дней» не сможет. Даже если они зазубрили как этими возможностями пользоваться.

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

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

Которые вообще не взлетели,

Ну не взлетели и не взлетели. Паскаль и сам не очень-то высоко летает последние лет пятнадцать.

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

Нет.

Человека без фантазии и воображения ответ.

При одних и тех же флагах компиляции.

Считайте это тоже параметрами функции.

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

Это абсолютно неважно. Компилятора может вообще не быть. Лямда исчисление так и вовсе раньше компьютеров придумали.

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

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

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

Сам немецкий фрагментирован и баварец сильно отличается от берлинца и тем более венца.

А вот с языками программирования (если находиться, например в семействе алголоподобных)

Таки вы сами указали на кривизну аналогий.

mister_VA ★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)