Границы вовсе не искусственны, они исторически сложились, просто потому что невозможно быть специалистом по всему одновременно. Да, сейчас уже есть много прикладных дисциплин на стыке разных наук, но перемешать всё в одну — это Вы явно загнули.
Computer Science — это ведь не про языки программирования… они лишь одно из следствий и инструментов.
Какие есть фундаментальные вещи, которые можно изучать в классическом курсе? К примеру, архитектура фон Неймана, простые алгоритмы, алгебраические типы данных, лямбда-исчисление, абстрактное синтаксическое дерево и т.д. и т.п. Языки можно использовать разные, но чем чище в языке выражена та или иная концепция, тем лучше он годится для её объяснения. Т.е. отвечая на Ваш вопрос, для образования непригодны языки, в которых намешаны разнородные концепции.
Ну, так можно далеко зайти… Если мама объясняет ребёнку, что не надо хвататься за включенную лампу накаливания, потому что когда её включают — она горячая, можно ли это считать вводной формулировкой закона Джоуля-Ленца? :-)
Плюсанул, хотя со Scala не согласен, там слишком много разнородных концепций намешано в кучу. А для обучения лучше подходят чистые концепции аля Haskell, Scheme(всё-таки для обучения лучше Racket, чем Common Lisp), Smalltalk. Про SML ничего сказать не могу, я с ним не знаком )
Я уж молчу про обучение нормальным языкам, а не динозаврами, но даже не в этом суть
А какие языки нормальны для обучения? На мой взгляд, язык для обучения должен быть достаточно фундаментален, чтобы на его примере можно было показывать основные концепции, не подверженные быстрому устареванию. Т.е. получается, что для обучения можно применять C, Pascal, Smalltalk (есть в варианте для самых маленьких — Scratch), Haskell, Racket.
Советовать учить PHP, Ruby, Python, Java, C# в школе, я бы не стал… это всё либо станет неактуальным к моменту, когда они закончат школу и универ, либо 100 раз ещё изменится. Да и не все же должны прикладными программистами становиться… Подумайте о других предметах, везде даётся классический базис. С чего бы именно программу по Computer Science надо переписывать каждый год и учить тому, что заведомо будет неактуально лет через 20?
хочу, чтобы не просто какие-то конструкции ЯП можно было бы описать в терминах ТК, а чтобы само приложение было написано в терминах ТК. Короче, в Haskell есть конструкции, которые типа из ТК, но всё-равно приложения пишутся в терминах функций, типов, классов, а не ТК.
Для меня это выглядит логичным, потому что программисты, может быть за редким исключением, не мыслят в терминах теории категорий при разработке программы.
Но в любом случае, успехов Вам, может правда кому-то пригодится и такой ЯП.
Да, он по мотивам Haskell. Насчёт "мало ТК в Haskell" у меня возникает вопрос: Вы хотите много теории категорий в языке, чтобы что? Какой-то практический смысл в этом будет? Или просто just for fun эзотерический ЯП создать?
Вам намекнули, что "A опосредованно знает D" — это уже не ассоциативность, а транзитивность, которая вообще не про скобки. А вот что Вы подразумеваете под отношением "знает" и как его транзитивность следует из ассоциативности композиции функций или наоборот — это уже загадка.
На мой взгляд мобильной версией сайта просто неудобно пользоваться… Если статьи ещё можно читать, то комментарии писать и т.д. — почти нереально… все элементы управления малюсенькие и никак не учитывают возможность ими пользоваться на маленьком экране.
Откуда вы все в моем коменте находите происки JavaScript? :)
Ну, расскажите нам подробнее какие ещё есть отрасли, где такая же катавасия с технологиями, что они всего по 3 года живут.
нет в индустрии программирования такого объема знаний, который необходимо постигать десятилетиями.
Объём всё-таки довольно приличный, если всю индустрию взять, то и на 30+ лет изучения наберётся… Впрочем, на практике вся индустрия не нужна, нужна пара конкретных областей и немного из смежных, так что лет за 10 вполне реально выйти на плато. Но по факту мало кто выходит, т.к. по работе технологический стек может быть весьма ограниченным, что приводит к эффекту своеобразной зашоренности.
учитывая тот факт, что в программировании из нулевого стажа совсем не следует нулевой опыт практического программирования
гхм, мы тут вообще-то опыт и обсуждаем, а не стаж..
сам я занимаюсь rocket science, т.ч. в обозримом будущем у нас не наблюдается фазы "ничто не вечно под луною".
s/вечно/ново/
К rocket science эта фраза точно так же применима… Просто люди склонны переоценивать инновационную составляющую на порядки, в виду слабого знакомства с тем, что уже было :-)
Во первых, 3 года по меркам индустрии — это много, сравнимо со средним сроком актуальности конкретно взятой технологии.
Индустрия не ограничивается JavaScript. Так что в среднем срок актуальности технологий всё-таки ближе к 10 годам. Но суть даже не в этом… Когда у Вас наберётся приличный багаж знаний, Вы будете замечать общие моменты и мысль "ничто не ново под Луною" будет всё чаще всплывать при знакомстве с очередной супер-пупер-модной технологией.
Ниже уже писали, что годы могут пройти и без повышения левела, так что it depends…
На небольшом кол-ве лет проще делать выводы, т.к. можно прикинуть какое-то минимальное кол-во лет, требующееся для достижения конкретного уровня. Конечно, исключения возможны, но чаще за пару лет у людей возникает иллюзия компетентности, а не компетентность… Если уровень растёт, то человек это сам осознает постфактум.
Даже если это сарказм, то какой-то дурной… Всю статью можно свести к паре предложений:
"Не зацикливайтесь на ярлыках, а лучше вообще забудьте о них. Лучше делайте что должно для профессионального роста."
Автор же, отбрасывая одни ярлыки, тут же обвешивается с ног до головы другими: библиотекарь, ученый, художник, плотник. Имхо, это тупо.
бросаются словом «хакер» (и связанными с ним «хак», «хакфест» и «хакатон»), как будто рандомно ломать что-то на кусочки или вламываться в несанкционированную систему — хорошо.
Для программиста как-то несолидно в стиле жёлтой прессы ассоциировать слово "хакер" со взломом.
Границы вовсе не искусственны, они исторически сложились, просто потому что невозможно быть специалистом по всему одновременно. Да, сейчас уже есть много прикладных дисциплин на стыке разных наук, но перемешать всё в одну — это Вы явно загнули.
Computer Science — это ведь не про языки программирования… они лишь одно из следствий и инструментов.
Какие есть фундаментальные вещи, которые можно изучать в классическом курсе? К примеру, архитектура фон Неймана, простые алгоритмы, алгебраические типы данных, лямбда-исчисление, абстрактное синтаксическое дерево и т.д. и т.п. Языки можно использовать разные, но чем чище в языке выражена та или иная концепция, тем лучше он годится для её объяснения. Т.е. отвечая на Ваш вопрос, для образования непригодны языки, в которых намешаны разнородные концепции.
Ну, так можно далеко зайти… Если мама объясняет ребёнку, что не надо хвататься за включенную лампу накаливания, потому что когда её включают — она горячая, можно ли это считать вводной формулировкой закона Джоуля-Ленца? :-)
Плюсанул, хотя со Scala не согласен, там слишком много разнородных концепций намешано в кучу. А для обучения лучше подходят чистые концепции аля Haskell, Scheme(всё-таки для обучения лучше Racket, чем Common Lisp), Smalltalk. Про SML ничего сказать не могу, я с ним не знаком )
А какие языки нормальны для обучения? На мой взгляд, язык для обучения должен быть достаточно фундаментален, чтобы на его примере можно было показывать основные концепции, не подверженные быстрому устареванию. Т.е. получается, что для обучения можно применять C, Pascal, Smalltalk (есть в варианте для самых маленьких — Scratch), Haskell, Racket.
Советовать учить PHP, Ruby, Python, Java, C# в школе, я бы не стал… это всё либо станет неактуальным к моменту, когда они закончат школу и универ, либо 100 раз ещё изменится. Да и не все же должны прикладными программистами становиться… Подумайте о других предметах, везде даётся классический базис. С чего бы именно программу по Computer Science надо переписывать каждый год и учить тому, что заведомо будет неактуально лет через 20?
Физика начинается с 6-го класса, а химия — с 7-го, или сейчас что-то поменялось?
Для меня это выглядит логичным, потому что программисты, может быть за редким исключением, не мыслят в терминах теории категорий при разработке программы.
Но в любом случае, успехов Вам, может правда кому-то пригодится и такой ЯП.
Да, он по мотивам Haskell. Насчёт "мало ТК в Haskell" у меня возникает вопрос: Вы хотите много теории категорий в языке, чтобы что? Какой-то практический смысл в этом будет? Или просто just for fun эзотерический ЯП создать?
Спасибо за ответ. Теперь стало понятнее, что Вы хотели донести.
Уже ведь есть PureScript.
Вам намекнули, что "A опосредованно знает D" — это уже не ассоциативность, а транзитивность, которая вообще не про скобки. А вот что Вы подразумеваете под отношением "знает" и как его транзитивность следует из ассоциативности композиции функций или наоборот — это уже загадка.
На мой взгляд мобильной версией сайта просто неудобно пользоваться… Если статьи ещё можно читать, то комментарии писать и т.д. — почти нереально… все элементы управления малюсенькие и никак не учитывают возможность ими пользоваться на маленьком экране.
Ну, расскажите нам подробнее какие ещё есть отрасли, где такая же катавасия с технологиями, что они всего по 3 года живут.
Объём всё-таки довольно приличный, если всю индустрию взять, то и на 30+ лет изучения наберётся… Впрочем, на практике вся индустрия не нужна, нужна пара конкретных областей и немного из смежных, так что лет за 10 вполне реально выйти на плато. Но по факту мало кто выходит, т.к. по работе технологический стек может быть весьма ограниченным, что приводит к эффекту своеобразной зашоренности.
гхм, мы тут вообще-то опыт и обсуждаем, а не стаж..
s/вечно/ново/
К rocket science эта фраза точно так же применима… Просто люди склонны переоценивать инновационную составляющую на порядки, в виду слабого знакомства с тем, что уже было :-)
Индустрия не ограничивается JavaScript. Так что в среднем срок актуальности технологий всё-таки ближе к 10 годам. Но суть даже не в этом… Когда у Вас наберётся приличный багаж знаний, Вы будете замечать общие моменты и мысль "ничто не ново под Луною" будет всё чаще всплывать при знакомстве с очередной супер-пупер-модной технологией.
Ниже уже писали, что годы могут пройти и без повышения левела, так что it depends…
На небольшом кол-ве лет проще делать выводы, т.к. можно прикинуть какое-то минимальное кол-во лет, требующееся для достижения конкретного уровня. Конечно, исключения возможны, но чаще за пару лет у людей возникает иллюзия компетентности, а не компетентность… Если уровень растёт, то человек это сам осознает постфактум.
Даже если это сарказм, то какой-то дурной… Всю статью можно свести к паре предложений:
"Не зацикливайтесь на ярлыках, а лучше вообще забудьте о них. Лучше делайте что должно для профессионального роста."
Автор же, отбрасывая одни ярлыки, тут же обвешивается с ног до головы другими: библиотекарь, ученый, художник, плотник. Имхо, это тупо.
Для программиста как-то несолидно в стиле жёлтой прессы ассоциировать слово "хакер" со взломом.
Мудрость приходит с годами, но иногда годы приходят одни. ©
Смотря где. Если в среднем по России, то это очень много. Особенно учитывая что 3 года опыта — это по факту в лучшем случае миддл.
Странно, что умолчали о замене интерактивным командам git, типа
git add -i,git rebase -i.Я вообще без них workflow в git не представляю.