Часто думают, что программирование — есть что-то сложное и недетское. Однако это, в принципе, играючи опровергает большое количество коммерческих компаний — от Apple (Swift Playground) и до Tynker, ориентированных на ребят от 5 лет. Ну или возьмем тот же Code.org — здесь вы можете найти курсы для детей 4+.

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

image

Но сначала несколько пунктов относительно всего поста:

Наибольшее количество данных как всегда — на уровне Европы и США. Поэтому и выводов по ним больше. Урок информатики — это общее определение, которое используем с оговоркой. Потому как названия предмета очень варьируются в зависимости от страны и несут разную смысловую нагрузку.

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

Теперь, давайте перейдем собственно к самим выводам:

1) Computer Science — это не урок по использованию Microsoft Word/Excel/Paint. Это изучение принципов алгоритмики, computational thinking и таких основ, которые не меняются. Почти все страны, где Computer Science внедрен на уровне начальной школы (это, например, Эстония, Франция, Израиль, Испания, Словакия, Великобритания, Финляндия, Польша, Португалия, частично США, Индия, Китай, Австралия), сделали одно простое открытие — обучение софту — это сдвиг парадигмы, произошедший во время популяризации Microsoft Office и вылившийся в то, что преподавателю информатики перестало нужным быть профессионалом в IT, достаточно было быть профессиональным пользователем. Но софт имеет особенность устаревать, а будучи “пользователем” — тяжело быстро переучиться на “создателя”.

Что сделали на основе этого вывода: программа по Computer Science в школах Великобритании (взяты как конкретный пример) состоит из набора блоков — алгоритмы, программирование и разработка, данные и их отображение, hardware и процессинг, коммуникации и сети, информационные технологии.

image

2) “Компьютерная наука — это такой же предмет как физика и химия и должен изучаться детьми с начала школы и вплоть до ее окончания. Вообще, есть такая особенная черта в ряде стран — у них действительно произошло радикальное изменение отношения к предмету. Согласитесь, информатика в СНГ — это в большинстве случаев — одно занятие в неделю, а уровень предмета и его статус — болтается где-то вместе с физкультурой, уроком труда/технологии, музыки и танцев.

Что сделали на основе этого вывода: вот тут универсального ответа нет. Где-то государство меняло требования к преподавателям предмета. Например, в Израиле — всех преподавателей переквалифицировали, начали требовать того, чтобы преподаватель был не просто хороших юзером офисных программ, но и действительно знал Computer Science. Где-то увеличивали количество часов.

image

3) Если начать изучать Computer Science в начальной школе — можно значительно снизить уровень гендерного неравенства в IT. Это связано с тем, что когда дело доходит до программирования в средней школе — у детей уже формируется представление о том, что “для девочек”, а что “для мальчиков”. И обычно информатика попадает в категорию “для мальчиков”. В то же самое время, если начать давать предмет в 3-4 классах, то этой проблемы можно избежать (ну или значительно снизить), так как дети, раньше познакомившиеся с программированием — легче принимают его в дальнейшем и меньше стереотипизируют.

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

image

4) Computer Science — не обязательно значит “сидя за компьютером”. Зачастую мы не представляем it-шника иначе, как за компьютером. А еще и желательно в очках. И, в плохом раскладе, еще и сгорбившись. Но обучение computational thinking — это прежде всего обучение принципам мышления и только во вторую очередь — за компьютером. Больше всего наработок в этом направлении, как ни странно, у Австралии с Новой Зеландией — именно они занимались разработкой такого направления, как CS unplugged — упражнений на развитие навыков по предмету, которые выполняются без компьютера. Тут есть и другая глубокая мысль — зачастую технологии отвлекают. Поэтому, например, презентации советуют готовить сначала на листочке/в голове, суммируя основные мысли и их порядок, а только потом использовать power point и что бы то ни было еще. Так и с изучением Computer Science — сначала стоит понять принципы, а потом уже отвлекаться на технологию.

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

5) ЗадачаComputer Science — не сделать из вас программиста, а научить думать. И еще более важная задача — донести это до родителя. Вообще, для большинства стран, где внедрение предмета в расписание прошло успешно — характерна одна особенность — они очень много коммуницировали — и с преподавателями, и с директорами, и с родителями. Так, приведу в пример еще раз Великобританию (вообще, считаю, что это одна из самых показательно-образцовых стран) — в рамках внедрения нового курса были задействованы крупные телеканалы, велась активная поддержка на уровне статей “как вы можете помочь своему ребенку изучить computer science”, “что важно знать самим” и так далее.

Что сделали на основе этого вывода: строили, дотошно и детально коммуникационную стратегию по внедрению предмета.

image

Вот и все, чем хотела поделиться для начала. И если есть заинтересованные лица — пишите. Могу поделиться всеми теми материалами и линками по этой теме, которые есть.
Поделиться с друзьями
-->

Комментарии (202)


  1. xuexi
    03.11.2016 17:22

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


    1. AlyonaTkachenko
      04.11.2016 07:59

      Очень согласна. Так как смысле генерить программистов в промышленных объемах нет. А вот дать базовое понимание того, как работают технологии (а не только выучить ворду и паскалю) — важно)


  1. Scf
    03.11.2016 19:03
    +2

    Вот чем вам не нравится советский подход к информатике? Сначала играться с бейсиком, потом писать на паскале поиски-сортировки-деревья.


    1. theWaR_13
      03.11.2016 19:23
      +1

      Я уж молчу про обучение нормальным языкам, а не динозаврами, но даже не в этом суть. Вы серьезно в школе учились писать поиски, сортировки и деревья? Нет, такие школы есть, я знаю, но их приблизительно 1 на 15-20 средних образовательных, если не меньше.


      1. xuexi
        03.11.2016 22:21
        +2

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

        Раньше по сети гулял мем о том, что "паскаль для образования", хотя вокруг были Delphi, freepascal и прочие, даже реально учебные Pascal ABC, потом было затишье, а теперь новый мем "паскаль не для образования"?


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


        1. Vjatcheslav3345
          04.11.2016 09:40
          +3

          Scala, Scala, Lisp, Haskell, SML — для образования!!!:) Головоломные концепции отлично подойдут для развития мозга...:) а потом и к С++ можно в вузе будет приступать — он лёгоньким покажется.


          1. Source
            04.11.2016 15:09

            Плюсанул, хотя со Scala не согласен, там слишком много разнородных концепций намешано в кучу. А для обучения лучше подходят чистые концепции аля Haskell, Scheme(всё-таки для обучения лучше Racket, чем Common Lisp), Smalltalk. Про SML ничего сказать не могу, я с ним не знаком )


          1. xuexi
            04.11.2016 18:11

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


            1. Source
              04.11.2016 22:17
              +1

              Computer Science — это ведь не про языки программирования… они лишь одно из следствий и инструментов.
              Какие есть фундаментальные вещи, которые можно изучать в классическом курсе? К примеру, архитектура фон Неймана, простые алгоритмы, алгебраические типы данных, лямбда-исчисление, абстрактное синтаксическое дерево и т.д. и т.п. Языки можно использовать разные, но чем чище в языке выражена та или иная концепция, тем лучше он годится для её объяснения. Т.е. отвечая на Ваш вопрос, для образования непригодны языки, в которых намешаны разнородные концепции.


            1. Vjatcheslav3345
              07.11.2016 12:23
              +3

              В каждой шутке есть доля шутки, вот я и пошутил немного, но… — я имел в виду, что программирование можно было бы изучать в школе на протяжении 10-11 лет и продолжать в профобразовании и даже в аспирантуре (итого, получится, что грамотный человек будет иметь лет 17 изучения дисциплины — и нельзя это ценное время тратить на изучение всяческих тонкостей промышленного программирования, которые недолговечнее чем подёнки).
              Но, — изучать так как советуют корифеи программирования и педагогики — не спеша, вникая в теорию. Чтобы легче давалось погружение в теорию и нужны вот такие вот специфические языки а потом уже, ближе к вступлению в "большую жизнь" — можно пройтись по практическим инструментом.
              И не факт, что приведённые мной языки-примеры окажутся в школе наилучшими — языки стремительно устаревают (например, сейчас появились языки для вероятностного и квантового программирования) в современный период их развития, к тому же, если, скажем начать искать место дисциплины "Программирование" в образовании, то окажется, что, скажем, математики, информатики захотят разрабатывать ещё более абстрактные языки для нужд образования, но, подходя к ним с ещё и с позиций психологии и педагогики и даже медицины и здравоохранения учащихся и их педагогов. И они будут правы — ведь в образовании мы не повторяем вульгарно и в точности путь человека, скажем, в математике — учась считать сначала камешками, потом изобретая всевозможные системы счисления, изобретая нуль и т. д. а повторяем скорее развитие идей, не пытаясь проверить каждый тупиковый путь.
              Самое главное, чтобы языки разрабатывали и применяли в программах "на опережение", так, чтобы к окончанию 10-15-летнего учения человек мог начинать пользоваться идеями, изучаемыми ранее, уже в практических языках и целях.


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


              1. pingping
                08.11.2016 00:02

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

                Хорошо бы, но это уже невозможно. Времена такой презсказуемости давно прошли (почему — гуглить/ютубить «Закон Времени»).

                Потому, остаётся единственный правильный путь дать нетленные знания: это знания о том, как познавать что-либо новое вообще, и творить что-либо новое. Т.е. управлять — в самом широком смысле слова.


                1. Vjatcheslav3345
                  08.11.2016 09:19
                  +1

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


                  1. pingping
                    08.11.2016 09:34

                    языков для учебного программирования

                    Мне кажется, что за деревьями становится плохо видно сам лес.
                    Какова цель системы образования?
                    * Чтобы удобно провести 10 лет жизни?
                    * Или чтобы подготовиться ко взрослости?

                    Было бы довольно внезапно, неск лет в школе изучая специальные какие-то языки, выйдя во взрослую жизнь, обнаружить, что они в принципе никому не нужны…
                    Причём, это как раз и происходит, и не только с информатикой. Взрослые люди задаются вопросом: зачем было тратить 10 лет на школу, которая учила тому, что потом оказалось не нужно?

                    Про учить на перспективу — всё ж загуглите про «Закон Времени» — там есть ролик, наглядно показывающий почему единственная перспектива — это теория управления.

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


                    1. Source
                      08.11.2016 10:48

                      Было бы довольно внезапно, неск лет в школе изучая специальные какие-то языки, выйдя во взрослую жизнь, обнаружить, что они в принципе никому не нужны…
                      Так именно поэтому и не надо учить в школе Java/Python… Они подвержены моде, как любой мейнстрим.
                      Концепции по большей части моде не подвержены, поэтому всё что останется для перехода к production — это изучить синтаксис модного к тому моменту языка. Что как мы знаем занимает 2-3 недели, включая основную часть стандартной библиотеки.
                      А теперь подумайте сколько лет понадобится чтобы переключиться на что-то типа Haskell после 10 лет изучения Java.


                      1. Idot
                        08.11.2016 10:53

                        Так именно поэтому и не надо учить в школе Java/Python… Они подвержены моде, как любой мейнстрим.

                        Именно!


                      1. pingping
                        08.11.2016 12:12

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

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


                        1. Source
                          08.11.2016 20:20

                          Ну и пусть раз в 5 лет мейнстрим меняется — ну так обновлять программу обучения всё равно нужно.
                          Ахах, Вы слишком хорошего мнения о минобре, новую программу лет 5 только согласовывать будут.
                          Да и потом, с чего Вы взяли, что предложенные языки неадекватны?.. за исключением Паскаля, остальные вполне себе используются в production, хоть и во втором эшелоне по популярности, а С так вообще — в первом, просто он уже достаточно стабилен, чтобы не дёргаться каждый год в новые фичи.

                          P.S. Если отвлечься от школы и переключиться на действующих программистов… Перечислите, если не трудно, список языков, которые Вы считаете перспективными с горизонтом 10 лет?


                          1. pingping
                            09.11.2016 08:51

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

                            хоть и во втором эшелоне по популярности

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

                            список языков, которые Вы считаете перспективными с горизонтом 10 лет?

                            Первый эшелон: из семейства скриптовых: жабоскрипт (ну понятно) и всё, из низкоуровневых: Go (ибо с-подобный и асинхронный) и С.
                            Все остальные питоны, джавы, пхп, руби и т.д. — уже второй эшелон.

                            Да что тут считать. Берём статистику по языкам на гитхабе и всё видно (столбик слева):
                            https://github.com/search?o=desc&q=stars%3A%3E1&s=stars&type=Repositories

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

                            Вобщем, основной тренд: асинхронность. Если она есть в самом языке (без необходимости сторонних либ) — то за ним будет и своя часть рынка.


                            1. Source
                              09.11.2016 12:27

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

                              Так я и предлагаю давать более востребованные знания, а не плодить кодеров-индусов из русских )))


                              Да что тут считать. Берём статистику по языкам на гитхабе и всё видно

                              Вы делаете прогноз на 10 лет, просто по текущему кол-ву открытых репозиториев на github? Ваше право, конечно, но имхо слабоватая метрика для прогнозов.
                              JavaScript сейчас колбасит только так. Учить его сейчас, чтобы найти работу в 2017 году — можно. С горизонтом 10 лет — бессмысленно.
                              А более удобных синтаксисов и так уже навалом.


                              1. pingping
                                10.11.2016 07:17

                                Вы делаете прогноз на 10 лет, просто по текущему кол-ву открытых репозиториев на github? Ваше право, конечно, но имхо слабоватая метрика для прогнозов.

                                Метрика была написана: «Вобщем, основной тренд: асинхронность.» И указанные перед отсылом к гитхабу языки были выбраны именно по этому критерию.

                                JavaScript сейчас колбасит только так.

                                Ну если бурное развитие это «колбасит» — то пусть колбасит :)

                                С горизонтом 10 лет — бессмысленно.

                                Вышими же словами: «но имхо слабоватая метрика для прогнозов.». Это бессмысленно потому, что «колбасит»? Или почему бессмысленно?

                                А более удобных синтаксисов и так уже навалом.

                                Да, coffeescript рулит.


                                1. Source
                                  10.11.2016 14:14

                                  На мой взгляд, развитие — это когда что-то новое появляется (заимствования не в счёт) или хотя бы плохое старое отбрасывается… И это явно не про JavaScript.


                                  Это бессмысленно потому, что «колбасит»? Или почему бессмысленно?

                                  Да, если он и останется, то через 10 лет это будет совсем другой язык.
                                  Но вообще в JavaScript далеко не самая удачная модель асинхронности — всё упирается в центральный однопоточный event-loop. Сравните с Erlang/Elixir, где центральный event-loop отсутствует как класс, а акторы масштабируются на сколько угодно ядер или даже на кластер машин.


                                  1. pingping
                                    10.11.2016 15:19

                                    И это явно не про JavaScript.

                                    Т.е. свежие ES6 и ES7, введшие множество фич и синтаксического сахара (движение к питон-стилю синтаксиса) — Вы не рассматриваете как развитие?
                                    Просто хочу либо какой-то конкретики про JS (почему он так уж плох), либо простое «да пофиг на него просто».

                                    через 10 лет это будет совсем другой язык.

                                    Ну и на здоровье. Не улучшать что-то только для того, чтобы не менять… эээ? :)
                                    Ну либо Вы в состоянии показать заведомо идеальный и давно неизменный ЯП?

                                    всё упирается в центральный однопоточный event-loop.

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

                                    Сравните с Erlang/Elixir

                                    Вполне возможно, оно там как-то лучше завёрнуто (изначально в ТЗ на язык, видать, было так), но где тогда их распространённость?
                                    На ерланге я знаю целую софтину (ejabberd) и либу распределённого хранения (кажись) mnesia…
                                    Понятно, что маркетинг круче технического совершенства, но нода появилась не из-за маркетинга. Жабоскрипт сумел выйти из браузера в переполненную и чрезвычайно конкурентную среду серверного программирования (в виде ноды). В 2009. А сколько лет обозначенным языкам? Почему у них так негуст рынок при такой то архитектуре?

                                    Вобщем, как я вижу: может по отдельным «концепциям» вполне возможно найти какие-то более удачные варианты, но суммарно по всем возможностям и экосистеме, которая на сегодня есть у жабоскрипта — вопрос о скриптовых языках закрыт надолго.
                                    На каком ещё языке можно:
                                    * писать асинхронно из коробки (без доп. либ)
                                    * писать на всех (всех) мыслимых платформах: сервер, браузер, десктоп, мобил и даже всякие «малинки»
                                    * иметь такую громадину готовых сторонних либ (более 200к либ только на npmjs, пусть даже не всё там для js, это с 2009; для сравнения: у синхронного питона на pypi около 70к либ, но с 1992 года(!!!)), и все эти либы — автоматически асинхронны, вопрос уместить в одном процессе разные сервера в принципе не стоит

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


                                    1. Source
                                      10.11.2016 19:00

                                      Т.е. свежие ES6 и ES7, введшие множество фич и синтаксического сахара (движение к питон-стилю синтаксиса) — Вы не рассматриваете как развитие?

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


                                      Просто хочу либо какой-то конкретики про JS (почему он так уж плох)

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


                                      Ну либо Вы в состоянии показать заведомо идеальный и давно неизменный ЯП?

                                      Нет конечно, на это только Пайк способен, но мало кто с ним согласен )))
                                      Тем не менее, очень немногие языки "развиваются" по сценарию "%lang_name% — говно, давайте его целиком переделаем". Обычно люди как-то более вдумчиво подходят к дизайну языка и не переделывают его кардинально после версии 1.0.


                                      изначально в ТЗ на язык, видать, было так

                                      Да, Вы угадали… изначально идея была в создании языка, который позволил бы писать ПО для управления тысячами устройств, без даунтайма, чтобы при звонках на телефон АТС не отвечала "извините, у нас тут ПО зависло". По совпадению, теперь для обычной разработки нужен именно такой язык. Кто ещё может похвастаться аналогом OTP? Особенно учитывая, что она уже 25 лет в бою под такими нагрузками, которые 99.999% проектов даже не снились, и 20 лет в OpenSource.


                                      На ерланге я знаю целую софтину (ejabberd)

                                      А про Riak или RabbitMQ не слышали? Ну или хотя бы про WhatsApp?


                                      Почему у них так негуст рынок при такой то архитектуре?

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


                    1. Vjatcheslav3345
                      08.11.2016 10:49
                      +1

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


                      1. pingping
                        08.11.2016 12:19

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

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


                        1. Vjatcheslav3345
                          09.11.2016 09:10
                          +1

                          Спецязыки — это не большая проблема, чем сборка электросхем из учебных комплектов на уроках физики электрических цепей — никто же не ворчит: "Хватит дурью маяться, идите, и, как настоящие пионеры/комсомольцы, лучше бсплатно свет в подвале моей многоэтажки проведите".
                          Но люди, потом избравшие электротехнику своей профессией, благодаря знанию фундаментальных принципов проектируют и успешно реализуют трансконтинентальные системы связи и континентальные системы генерации и передачи энергии, не говоря уже о всём остальном.
                          Главный практический выхлоп спецязыков — твёрдые знания и умения в головах учеников и учителей (их тоже надо учить — посмотрите на их текущий уровень знаний и умений).


      1. Source
        03.11.2016 23:54
        +1

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

        А какие языки нормальны для обучения? На мой взгляд, язык для обучения должен быть достаточно фундаментален, чтобы на его примере можно было показывать основные концепции, не подверженные быстрому устареванию. Т.е. получается, что для обучения можно применять C, Pascal, Smalltalk (есть в варианте для самых маленьких — Scratch), Haskell, Racket.
        Советовать учить PHP, Ruby, Python, Java, C# в школе, я бы не стал… это всё либо станет неактуальным к моменту, когда они закончат школу и универ, либо 100 раз ещё изменится. Да и не все же должны прикладными программистами становиться… Подумайте о других предметах, везде даётся классический базис. С чего бы именно программу по Computer Science надо переписывать каждый год и учить тому, что заведомо будет неактуально лет через 20?


        1. AlyonaTkachenko
          04.11.2016 12:44

          Очень неплохо на эту тему написано тут: https://www.computingatschool.org.uk/data/uploads/ComputingCurric.pdf (11 страница)

          Цитируя:
          Every pupil should have repeated opportunities to design, write, run, and debug, executable programs. What an “executable program” means can vary widely, depending on the level of the pupil and the amount of time available. For example, all of the following are included in “programming”:
          — Small domain-specific languages, such as instructions to a simple robot, or Logo-style
          turtle.
          — Visual languages such as Scratch BYOB or Kodu.
          — Text-based languages, such as C#, C++, Haskell, Java, Pascal, PHP, Python, Visual
          Basic, and so on.
          — Spreadsheet formulae

          Both interpreted and compiled languages are “executable”. In every case the underlying concepts are more important than the particular programming language or environment. The ability to understand and explain a program is much more important than the ability to produce working but incomprehensible code. Depending on level, pupils should be able to:
          Design and write programs that include
          o Sequencing: doing one step after another.
          o Selection (if-then-else): doing either one thing or another.
          o Repetition (Iterative loops or recursion).
          o Language constructs that support abstraction: wrapping up a computation in
          a named abstraction, so that it can be re-used. (The most common form of
          abstraction is the notion of a “procedure” or “function” with parameters.)
          o Some form of interaction with the program’s environment, such as
          input/output, or event-based programming.
          Find and correct errors in their code
          Reflect thoughtfully on their program, including assessing its correctness and fitness
          for purpose; understanding its efficiency; and describing the system to others.


        1. qrKot
          05.11.2016 08:10
          +1

          Мне кажется, одним из важных факторов при выборе образовательного языка является его поддержка/развитие с уклоном на реальное прикладное применение. Возможность написать реальное приложение/систему/сайт/сервис/чтоугодно «для себя», а не просто инструмент для «пописать алгоритмы сортировки» — реально ощутимый «бонус».
          Вот, скажем, тот же Pascal. Как к языку к нему претензий, пожалуй, особых и нет. Вопрос в том, что ребенок, который реально «перерос» школьную программу и уже не получает кайфа от чисто «тренировочных» задач, кроме этих самых сортировок ничего написать не сможет. Ну вот нереально на Паскале что-то действительно интересное написать для прикладных задач. Захотел ребенок для себя «ежедневник» написать и… и все… пошел учить что-то другое.
          Из примеров, впрочем, на памяти строго обратное. Сначала Python внедрили в качестве образовательного в куче ВУЗов, а уже потом Гугл тот же вложился в прикладную «обвязку» для языка. На выходе получился вполне неплохой язык для изучения CS (не без оговорок, конечно, но получился) с достаточно широким прикладным применением. С Бейсиком и Паскалем так не получается.
          Так что я лично (впрочем, мое мнение не особо авторитетно) только «за» переход преподавания в школах на тот же Python. В конце концов ребенок и портал для себя написать сможет, и десктопное что-то, и пару-тройку консольных тулз, и с «малинками» поиграться сможет для дальнейшего саморазвития.


          1. pingping
            05.11.2016 11:09
            +1

            Плюсую.

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

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


            1. Source
              05.11.2016 13:38

              PS мне много лет нравился именно питон, пока не узнал про ноду

              Как Вы чётко в одном предложении выразили, почему не надо ни Python, ни JavaScript использовать в обучении основам :-)


              1. pingping
                05.11.2016 16:28

                И почему же?


                1. Source
                  05.11.2016 22:54

                  Потому что они на уровне вкусовщины… Можете представить фразу типа "мне много лет нравилась механика, пока не узнал про термодинамику"?
                  Учебная программа — серьёзная вещь, в ней нет места личным пристрастиям. И ещё раз подчеркну, что языки программирования — это не объект изучения для школьной информатики. Это лишь форма записи для демонстрации концепций.


                  1. pingping
                    06.11.2016 02:31

                    Учебная программа — серьёзная вещь, в ней нет места личным пристрастиям.

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

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

                    А в школе не время/не место изучать такие формы для демонстрации? Почему? Во «взрослом» мире такие формы очень даже востребованы. Почему бы нужным и востребованным вещам не учить в школе? (а чему, тогда, учить, если не нужному и важному? — впрочем, понятно чему… тому, чему счас повально учат, производя массы темени...)

                    Вкусами (приоритетами целей), конечно, можно меряться. Но если сойтись на том, что самые главные параметры языка программирования — это 1) затратность на работу с ним (время и силы) и 2) функционал, то по этим параметрам названные языки не равны.

                    (holywar mode on)
                    Думаю, холивар любят многие :), но разница меж питоном и нодой/js — в одном слове: асинхронность. Это значит выигрыш по параметру «функционал», а, следовательно, и по первому, главному — «затратность». (справедливости ради отмечу, что с 3.5 питона у него тоже есть асинхронность «из коробки» и нет нужды вручную перенатягивать синхронные либы на асинхронный Twisted, но поезд ушёл (объём сторонних библиотек уже в пользу жабы (можно посмотреть на pypi и npm — объём отличается в 3 раза, хотя да, в npm есть и не только нодо/жабо либы)) и питон-в-вебе пока только маячит в виде WebAssembly.

                    Много слов не буду писать почему так. Дам слово одному бывшему питонщику в статье про ноду, где он привёл пример, когда в одной проге на питоне нужно было совместить функционал двух синхронных библиотек…
                    (инглиш):
                    https://blog.nelhage.com/2012/03/why-node-js-is-cool/


                    1. Source
                      06.11.2016 15:44
                      +1

                      просто все люди (включая учителей) — разные

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


                      А в школе не время/не место изучать такие формы для демонстрации?

                      Дело в акцентах. Вы гнёте линию, что надо выбрать какой-то один ЯП и учить ему. А я говорю о том, что информатика не об этом и надо учить концепциям с использованием 5-6 языков, не углубляясь в stdlib и прочее. Практически у каждой дисциплины есть 2 стороны — фундаментальная и прикладная. Фундаментальную учат в школе и в ВУЗах, прикладную — преимущественно в ПТУ или на работе. Так устроено изучения абсолютно всех наук, и я не вижу причин почему информатика должна тут быть не такой как все.


                      в одном слове: асинхронность

                      Вот хотя бы этот пример. Зачем нужна асинхронность? Чем она отличается от многопоточности? Чем параллельность отличается от конкурентности? Какие существуют модели конкурентности? В чём недостатки модели конкурентности в Node.JS и для каких задач она не подходит?
                      Вот на какие вопросы должно отвечать образование, а не выбирать что-то одно подо всё. "No Silver Bullet" ©


                      1. qrKot
                        07.11.2016 05:00
                        +1

                        Ну, собственно на одном языке зацикливаться — действительно «не очень» идея.
                        Я, например, говорил о том, что всем упомянутым вами вещам вполне можно учить на языках, имеющих прикладное применение.
                        Учить чему-то на том же Паскале или Бейсике, как мне кажется, форменное издевательство. Да, у них очень невысокий порог вхождения, что есть, безусловно, плюс. С другой стороны, дальше чем «пописать сортировку в учебных целях» на них не уедешь. В конечном итоге, мы удовлетворяем «средних» учеников, «работающих на оценку», но не даем никаких возможностей для роста будущим «рок-звездам» в программировании.
                        Собственно, откуда такая проблема — тоже вполне понятно. Проблема, собственно, начинается в учителях. Где ж их набрать-то столько, чтобы «в теме» были. Средний уровень школьного учителя информатики (могу и ошибаться в целом, говорю только по своему опыту) у нас невысокий.
                        На определенный момент мы упускаем другую проблему.
                        Допустим, у нас есть ученик Василий. Очень заинтересовался программированием, пишет, не покладая рук. Захотел написать что-то реально прикладное, даже язык новый, как мог, изучил. Допустим, ту же Java.
                        Проблема не в том даже, что бедному ребенку пришлось еще один язык выучить — впитывают-то они, как губки. Проблема начинается на том месте, где этот условный ученик Василий «затыкается» на каком-то месте своего pet-проджекта и идет искать помощи. У кого он ее ищет? Правильно, у ближайшего «авторитетного специалиста», у своего учителя. А учитель смотрит на Василия, как на дурака, и спрашивает, что за хрень тут написана…


                        1. Source
                          07.11.2016 11:02

                          Учить чему-то на том же Паскале или Бейсике, как мне кажется, форменное издевательство. Да, у них очень невысокий порог вхождения, что есть, безусловно, плюс. С другой стороны, дальше чем «пописать сортировку в учебных целях» на них не уедешь.
                          Откуда такое пренебрежение к Паскалю и Бейсику? Есть же Component Pascal, Object Pascal (он же Delphi), Visual Basic .NET. Что такого на них нельзя написать, будучи школьником?
                          И Вы совершенно верно написали, что есть огромное количество преподавателей, которые их уже знают хоть в какой-то мере.

                          но не даем никаких возможностей для роста будущим «рок-звездам» в программировании.
                          Да ладно, для таких достаточно предоставить доступ к компьютеру :-D
                          С прикладным применением всё равно не угадать… Вспомните, когда Вы в школу поступили, какие из сегодняшних мейнстрим-языков хотя бы существовали?


                          1. qrKot
                            07.11.2016 11:25

                            >> Откуда такое пренебрежение к Паскалю и Бейсику? Есть же Component Pascal, Object Pascal (он же Delphi), Visual Basic .NET.
                            Ну вот, следуя вашей же логике, от таких вещей, как циклы, в преподавании надо отказываться. Вот конкретно на Component Pascal, Object Pascal и Visual BASIC отказываться? А как?
                            А вменяемые UI-библиотеки для этих языков?
                            Не говоря уже о том, что все 3 — достаточно нишевые и вендорозависимые вещи.
                            Собственно, назовите мне хоть одно реальное преимущество хотя бы одного из 3-х названных вами языков над той же многострадальной Java.
                            >> Что такого на них нельзя написать, будучи школьником?
                            Домашний сайт?
                            >> С прикладным применением всё равно не угадать…
                            Ну, собственно, тут трудно, да. Но те же BASIC и Pascal (как бы ни прискорбно оно звучало в отношении второго) вполне можно в разряд эзотерических языков относить. Экосистема вокруг них мертва.


                            1. Source
                              07.11.2016 11:59

                              Ну вот, следуя вашей же логике, от таких вещей, как циклы, в преподавании надо отказываться.
                              На примере Pascal о них как раз можно рассказать. А в VB.NET, я так подозреваю, давно уже LINQ заправляет работой с Enumerable.

                              А вменяемые UI-библиотеки для этих языков?
                              Есть. Для паскаля есть VCL и LCL. Биндинги к wxWidgets есть практически подо всё.

                              Домашний сайт?
                              С VB.NET можно использовать ASP.NET MVC. Smalltalk, Haskell, Racket тоже отлично справятся с этой задачей. Хотя, честно говоря, в эту сторону я не думал. Считаете веб-программирование стоит тоже в учебный план включить?

                              назовите мне хоть одно реальное преимущество хотя бы одного из 3-х названных вами языков над той же многострадальной Java.
                              Вы про паскали и бейсик? Они проще.


                              1. qrKot
                                08.11.2016 05:33

                                >> На примере Pascal о них как раз можно рассказать.
                                Ну, собственно, о них можно рассказать на примере почти любого другого языка. Изучать Паскаль, чтобы на нем продемонстрировать работу циклов?
                                >> А в VB.NET, я так подозреваю, давно уже LINQ заправляет работой с Enumerable.
                                В деталях — дьявол. LINQ — вполне себе достаточно нишевое вендорозависимое решение. К тому же скрывающее детали реализации. В образовательных целях предпочел бы какой-нибудь другой ORM.
                                >> Для паскаля есть VCL и LCL.
                                Мне вот кажется логичной мысль не завязывать образовательный процесс на проприетарное относительно дорогое решение, поддерживаемое одним единственным едва живым вендором…
                                >> Биндинги к wxWidgets есть практически подо всё.
                                Поэтому мне и кажется, что смысла завязываться на продукты Embracadero смысла нет.
                                >> Считаете веб-программирование стоит тоже в учебный план включить?
                                Собственно, сетевое программирование на уровне сервисов/служб/клиентов, КМК, стоит.
                                >> С VB.NET можно использовать ASP.NET MVC.
                                Вы же чуть выше говорили, что изучать нужно сами основы, а не конкретный продукт конкретной конторы, который неизвестно еще, будет ли жив через пару-тройку пятилеток.
                                >> Smalltalk, Haskell, Racket тоже отлично справятся с этой задачей.
                                К стыду своему признаю, что тут я вообще не авторитет.
                                >> Вы про паскали и бейсик? Они проще.
                                Хм, тут вы правы. А Python, Go? Не сложнее паскаля и бейсика, имхо. Впрочем, Go достаточно нишевой и таки гугловый, хотя комьюнити у него конское. Но если уж выбирать в качестве языка для обучения между Python и Basic (а их ниши вполне себе пересекаются), не вижу аргументов в пользу Basic'а.


                                1. Source
                                  08.11.2016 11:06

                                  Изучать Паскаль, чтобы на нем продемонстрировать работу циклов?
                                  Вы передёргиваете… Структурное программирование не ограничивается циклами. Какие ещё языки Вы бы выбрали для демонстрации именно этой концепции в чистом виде?

                                  В образовательных целях предпочел бы какой-нибудь другой ORM.
                                  Вот Вы считаете, что LINQ — это ORM и вендорозависимое решение. А по факту, это не ORM и такой же подход можно реализовать во многих языках, где есть ФВП.

                                  Мне вот кажется логичной мысль не завязывать образовательный процесс на проприетарное относительно дорогое решение
                                  Ну что Вы привязались к Паскалю, он ведь 1 из списка, образовательный процесс на него не будет завязан, он будет его синтаксис использовать для демонстрации структурного программирования. Я уж молчу про то, что LCL — это OpenSource (Lazarus).

                                  Вы же чуть выше говорили, что изучать нужно сами основы, а не конкретный продукт конкретной конторы, который неизвестно еще, будет ли жив через пару-тройку пятилеток.
                                  Правильно. В школе и не нужно изучать ASP.NET MVC и т.п. Это был ответ на Ваш вопрос по поводу внеклассной программы для тех, кто очень увлёкся программированием. И смысл в том, что они найдут чем заняться вне школы для любого ЯП.

                                  К стыду своему признаю, что тут я вообще не авторитет.
                                  Так это не стыдно. Их слабая известность — это недостаток текущей системы образования. Поизучайте их на досуге и поймёте почему те, кто уже ознакомился, хотели бы чтобы этим концепциям учили сразу… вместо того, чтобы пробиваться к ним годами через пот и слёзы промышленного программирования.

                                  А Python, Go? Не сложнее паскаля и бейсика, имхо.
                                  Python гораздо сложнее, как любой мультипарадигмальный язык. Go — на мой взгляд не простой, а урезанный… Чуть в сторону и уже приходится извращаться.


                        1. Idot
                          07.11.2016 19:07

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

                          Да ну?! У меня был тёплый ламповый Бейсик на терминале. Но мы на нём такое писали… используя командные ASCII коды. В самом Бейсике не было никаких команд для перемещения курсора, но ASCII коды — позволяли такое делать. Так что на Бейсике мы делали то, что на прямую он делать не позволял.

                          PS сколько Вам лет, молодой человек?


                          1. qrKot
                            08.11.2016 05:40

                            >> PS сколько Вам лет, молодой человек?
                            Не уверен, что это существенно… 35
                            >> У меня был тёплый ламповый Бейсик на терминале. Но мы на нём такое писали… используя командные ASCII коды. В самом Бейсике не было никаких команд для перемещения курсора, но ASCII коды — позволяли такое делать.
                            Не сомневаюсь, было очень весело и вдохновляюще. Но вы же понимаете, что делали вы это не от хорошей жизни. Современный ученик с имеющимся инструментарием за сравнимое время Super Mario Bros. написать может. Только не на Бейсике…
                            В данный момент Бейсик может оказаться полезным для… хм… Для написания макросов в MS-Оффисе. Честно говоря, не знаю сфер применения, где у него не было бы лучшей альтернативы.
                            >> Так что на Бейсике мы делали то, что на прямую он делать не позволял.
                            Что-то мне кажется, это не в пользу языка говорит…


                      1. pingping
                        08.11.2016 01:39

                        Да есть та самая «сильвер буллет». Но Вы то с питона начали. Я лишь показал, что не всё так с ним однозначно.

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

                        Да, программу нужно продумывать для всех…

                        … Ээ… нет, нельзя :( оказывается, что
                        Учебная программа — серьёзная вещь, в ней нет места личным пристрастиям.

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

                        Выходит, остаются дети без программы вообще… Ну или остаётся ждать непосредственно факс от Бога — может хоть у него пристрастия не личные…

                        Вы гнёте линию, что надо выбрать какой-то один ЯП и учить ему

                        Не говорил я такого, уж извините.
                        Разве, если один язык лучше другого, то это значит, что он лучше всех вообще?
                        Ну и я не говорил, что вся информатика — строго внутри компьютеров естьмъ.

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

                        И Вы способы показать такие концепции детям, не используя ни одного языка?
                        Всё равно ж придётся на каком-то языке (русском, инглише, машинном и т.д.) рассказывать.

                        Фундаментальную учат в школе и в ВУЗах, прикладную — преимущественно в ПТУ или на работе. Так устроено...

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

                        Зачем нужна асинхронность?

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

                        Чем она отличается от многопоточности?

                        Многопоточность — частный случай асинхронности, основанный на множестве потоков управления.

                        Чем параллельность отличается от конкурентности?

                        Одно и то же на разных языках: по-русски и по-англицки, (записаное русскими буквами concurrency). Примерно то же и с parallelnost'yu.

                        Какие существуют модели конкурентности?

                        В педивикии расписано.

                        В чём недостатки модели конкурентности в Node.JS

                        В избыточной монопольности других :) (шутка)

                        и для каких задач она не подходит?

                        Можно сказать, что для много- и долго-мыслительных задач (CPU-bound), но, подумав, окажется, что подходит: на такой же модели можно написать процепрожорливую прогу.
                        Так что, выходит, что для всех подходит. (а лучше или хуже — Вы вопрос не ставили)

                        И касательно фундаментальных основ — то я крепко за них в школе. Нужно давать самую самую основу всего, всякой деятельности людей. В самом обобщённом виде — это управление.
                        Вот и нужно давать обобщённая теория для всех отраслей знаний людей. Чтоб в ней был расписын процесс управления как таковой (у человека он протекает в психике): из каких категорий состоит и какие взаимосвязи между ними есть. Т.е. это именно нетленные во времени знания. Изучив такую теорию, любой человек затем всю жизнь будет уметь самостоятельно учиться (впрочем, школа сейчас забивает детей ненужной ерундой, в итоге убивая практически любую тягу к знанию) и так же самостоятельно входить в любую отрасль деятельности (включая программирование: хоть на перфокартах, хоть на название_языка_программирования_популярного_на_ннный_год по желанию) в кратчайшие сроки.
                        И вместе с искусством Диалектики (искусство познания истины путём постановки наводящих вопросов) — это и есть та самая «Silver Bullet».


                        1. Source
                          08.11.2016 11:19

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

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

                          В самом обобщённом виде — это управление.
                          Что за управление? Менеджеров хотите готовить?


                          1. pingping
                            08.11.2016 12:30

                            Но способ краткой записи всё равно нужен, так же как в математике.

                            А ещё, может, захочется дать детям посчупать комп на практике, и тут таки придётся пользоваться каким-то реальным ЯП. И выбор прост: брать что-то промышленное на данный момент (пусть оно и изменится через 5 лет) или брать то, что массово не востребовано в ромышленности?

                            давайте вообще школу отменим, можно же википедию почитать…

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

                            Только вот не читают, включая Вас,

                            Что будут читать школьники — вопрос организации и их мотивации.
                            А насчёт меня — я что, должен был Вам скопипастить оттуда сюда, чтобы показать, что я умею найти нужную мне в каждый момент времени информацию? :) самому не смешно?

                            судя по ответам на предыдущие вопросы :-)

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

                            Что за управление? Менеджеров хотите готовить?

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


                            1. Source
                              08.11.2016 20:37

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

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

                              А насчёт меня — я что, должен был Вам скопипастить оттуда сюда, чтобы показать, что я умею найти нужную мне в каждый момент времени информацию? :) самому не смешно?
                              Да нет, конечно. Вопросы вообще были для примера… Просто некоторые ответы неправильные, некоторые неточные. Если Вам интересно восполнить этот пробел в знаниях, рекомендую книжку «Семь моделей конкуренции и параллелизма». В комментариях на мой взгляд не лучшее место расписывать, т.к. правильные ответы с пояснениями потянут на отдельную статью.

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


                              1. pingping
                                09.11.2016 09:09

                                Хм, откуда взялся такой критерий?

                                (очевидность mode) Да, вобщем, всё просто: время, отведённое виду хомо-сапиенс для детства — отведено не просто так, оно дано для подготовки ко взрослой жизни. (/очевидность mode) Следовательно, нужно давать самые актуальные вещи, которые востребованы во взрослой жизни.
                                Самые правильные фундаментальные знания, которые есть у человечества (хотя и заблуждения прошлого должны быть представлены в программе, но куда менее детально)
                                и самые востребованные технологии современности (но все былые технологии пересмотреть в программе — это вообще малореально), пусть они и изменятся к выпуску. К примеру, сейчас изучать работу компакт-дисков (в рамках курса технологий, а не фундамента) — всё-ж более адекватно, чем даже 3.5" дискеты.

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

                                Я не могу назвать «кашей» мультипарадигмальный язык. Если на основе одного синтаксиса возможно показать больше концепций — то это явный выигрыш.

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

                                «Семь моделей конкуренции и параллелизма».

                                Спасибо за рекомендацию.


                                1. Source
                                  09.11.2016 12:42

                                  Я не могу назвать «кашей» мультипарадигмальный язык.

                                  Смотрите в чём фишка: мультипарадигмальный язык не позволяет вам по факту использовать ни одну парадигму в чистом виде. Для обучения — это, на мой взгляд, самое ужасное. У школьника ещё не выкристаллизовалось понимание концепции, а его заставляют её применять на языке, который эту концепцию не поддерживает даже на 80%.
                                  Для промышленного применения это катит, т.к. можно применять фичи какой-то концепции даже не понимая её… такой "херак-херак и в продакшн". Но тут надо понимать какой вы хотите результат — заложить основу для становления кодеров за еду, в стиле Индии и Китая, или основу для становления профессиональных программистов.


                                  1. pingping
                                    10.11.2016 07:23

                                    Довольно громко поставлен вопрос, причём варианты ответа не взаимоисключающие (и профессионально можно работать за еду; причём, не только за еду).

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

                                    Ну конечно же позволяет.
                                    В своё время, изучая питон, я спокойно писал функционально и, грубо говоря, знать не знал оператор «class» и конструктор __init__. Через какое-то время дошёл до ООП и начал всё это применять.
                                    Счас, на жабоскрипте, всё это возможно точно так же: кому не надо ООП — спокойно пишет ф-ции.

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


                                    1. Source
                                      10.11.2016 14:35

                                      В своё время, изучая питон, я спокойно писал функционально и, грубо говоря, знать не знал оператор «class» и конструктор init.

                                      Вы, видимо, путаете "процедурно" и "функционально". Невольно подтверждая мой тезис о том, что концептуального образования дико не хватает. Даже профессиональные программисты частенько путаются в элементарных вещах.
                                      К примеру, в питоне есть мутабельные данные, этого уже достаточно для невозможности писать в чисто функциональном стиле и использовать стандартную библиотеку одновременно.
                                      Ну или вот яркий пример. Скажите, чему с точки зрения ФП равно


                                      random.random() == random.random()

                                      ?


                                      1. pingping
                                        10.11.2016 15:38

                                        random.random() == random.random()
                                        

                                        Заведомо — неопределённо.
                                        Равно равности двух случайных чисел.
                                        Два разных вызова дадут разные случайные числа — потому в общем виде более точного ответа не дать.

                                        Вы, видимо, путаете «процедурно» и «функционально»

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

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

                                        Кому? %)

                                        Даже профессиональные программисты частенько путаются в элементарных вещах.

                                        Получил значение выходного параметра — нужно записать в дневную отчётность: «воспользовался функциональной парадигмой»?
                                        Вам шашечки или ехать?

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

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


                                        1. Source
                                          10.11.2016 19:19

                                          Заведомо — неопределённо.

                                          Нет, с точки зрения ФП это равно true, т.к. функция оба раза вызывается с одинаковыми аргументами, точнее вообще без них. Вот и как с таким косяком в stdlib объяснять ФП?


                                          Но если из результата работы процедуры взять и получить результат — то это уже прям меняет парадигму программирования?

                                          :facepalm:
                                          Вы думаете, что процедурном программировании подпрограмма не может вернуть результат? Прочитайте хоть статью на вики, а то ведь реально путаете.


                                          И ну не вижу почему это может мешать функциональному программированию.

                                          В ФП все данные неизменны. Собственно, что данные, что функции трактуются в математическом понимании. Т.е. что однажды попало в память, то так и будет там лежать, пока GC до него не доберётся. Изменить значение в памяти нельзя.
                                          При этом переменные можно переназначать (rebinding), но данные от этого не меняются, просто становятся доступны для GC, если ни одна переменная с ними не связана.
                                          А функция в математическом понимании обязана быть строго определена в зависимости от аргументов. Например, f(x, y) == f(x, y) вне зависимости от того, что такое f и какие значения связаны с x, y.


          1. Source
            05.11.2016 13:37

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


            Захотел ребенок для себя «ежедневник» написать

            Вы же понимаете, что учебный вариант можно написать абсолютно на чём угодно. А для реального понадобится не только бэкенд, но и 3 клиента под разные мобильные платформы, 1 — под веб и от 1 до 3 под десктопы. И это в реальности делает большая команда, а Вы хотите одного бедного школьника нагрузить задачей, которой ни один профессионал в одиночку не занимается?


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

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


            1. qrKot
              07.11.2016 05:52

              >> Ну а если действительно перерос основы 5 языков, которые я перечислил, у него будет свобода выбора перейти к практическому применению одного из них уже вне школы.
              >> C, Pascal, Smalltalk (есть в варианте для самых маленьких — Scratch), Haskell, Racket.
              Вы про эти 5 языков? Серьезно?
              >> Вы же понимаете, что учебный вариант можно написать абсолютно на чём угодно.
              Я понимаю, что:
              а) не на чем угодно возможно
              б) не на чем угодно возможно в разумные сроки
              в) не на чем угодно стОит
              Ну и, собственно, из 5-ки «C, Pascal, Smalltalk, Haskell, Racket» не стОит ни на одном.
              >> а Вы хотите одного бедного школьника нагрузить задачей, которой ни один профессионал в одиночку не занимается?
              Вы что-то в дебри подались. Наколеночный ежедневник я, собственно, писал. Тысячи полторы строчек вышло. Не знаю, зачем там 100500 серьезных специалистов.
              В общем и целом, не совсем понимаю вашу позицию. С одной стороны вы пытаетесь привить ребенку правила серьезной разработки, рассказать, чем фронтенд от бекэнда отличается, предъявить ему требования по качеству, допустимые для серьезной команды. С другой утверждаете, что все это он должен сделать на Pascal'е…


              1. Source
                07.11.2016 11:23

                Вы про эти 5 языков? Серьезно?
                Вполне. Разве что насчёт C сомневаюсь, слишком низкоуровнево для непрограммистов.
                А в остальном я за те языки, которые учат думать. Нравится или нет, но Java и Python учат разве что искать готовые решения на SO.
                Pascal — структурное программирование, классические структуры данных и алгоритмы
                Smalltalk — обмен сообщениями, ООП, программирование через отладку, интроспекция
                Haskell — алгебраические типы данных, изоляция побочных эффектов, ФП
                Racket — гомоиконность, метапрограммирование, DSL

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


                1. pingping
                  08.11.2016 01:45

                  Про чисто учебный — поддерживаю.
                  Но следующим вопросом встаёт: зачему учить тому, на чём невозможно написать востребованного другими людьми чего-то?


                  1. Source
                    08.11.2016 11:34

                    Вспомните что было в мейнстриме 8-10 лет назад и поймёте почему учить мейнстриму — бесперспективно. Из актуального остались только концепции.


                    1. pingping
                      08.11.2016 12:31

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


                      1. Source
                        08.11.2016 20:55

                        Понимаете, тут много стереотипов… Я тоже буквально полгода назад думал, что Smalltalk устарел… А посмотрел на Pharo и охренел от возможностей среды разработки… IDE для Java и Python выглядят против неё как Gimp vs Photoshop :-)
                        Haskell с относительно недавнего времени стремительно набирает популярность. TIOBE его хэдлайнером ноября обозвали xD
                        Racket — это современный диалект Scheme, который в свою очередь используется в классической книге по Computer Science — «Structure and Interpretation of Computer Programs». Плюс на нём идет довольно крутая движуха разнообразных DSL, что весьма интересно, особенно при обучении.


                        1. pingping
                          09.11.2016 09:14

                          Глянул ему в синтаксись на педивикии…
                          это ж наркомания %))))

                          #lang racket
                          (require 2htdp/image)
                          (let sierpinski ([n 8])
                            (if (zero? n)
                              (triangle 2 'solid 'red)
                              (let ([t (sierpinski (- n 1))])
                                (freeze (above t (beside t t))))))
                          
                          


                          1. Source
                            09.11.2016 12:52

                            Это Lisp. По факту самый простой синтаксис для освоения. Но зашоренность сознания привычным С-like синтаксисом может мешать восприятию, это да.
                            К тому же Вы ж сами писали, что получать результат быстро — это круто.
                            Тут в 5 строках алгоритм отрисовки треугольника Серпинского. А фракталы — это интересно и весело. Теперь прикиньте сколько кода писать на JS пришлось бы для того же результата :-D


                            1. FForth
                              09.11.2016 17:28

                              Forth синаксически гораздо проще!
                              К тому же есть, например, проект языка програмирования Factor наследующего и принципы функциональной парадигмы.

                              P.S. Logo ещё не обсудили :)


                              1. Source
                                09.11.2016 19:51

                                Forth тоже имеет смысл изучить, особенно учитывая популярность стековых виртуальных машин. Но это уже всё-таки для профессиональных программистов. В рамках школы, имхо, достаточно про ОПЗ рассказать.


                                Logo ещё не обсудили :)

                                Кстати, да, тоже вариант для детей помладше.


                            1. pingping
                              10.11.2016 08:55

                              По факту самый простой синтаксис для освоения.

                              Вот это самый простой синтаксис??
                              ))))))
                              

                              это не смайлик, а 6 (ШЕСТЬ!!!) закрывающих скобочек.

                              Но зашоренность сознания привычным С-like синтаксисом

                              C тут непричём. Копаем глубже. Где в жизни люди впервые применяют операторы сравнения меньше, больше и т.д.? — в школе.
                              И как они там выглядят? функциями «zero?» или «positive?»? — нет, математическим языком оно записывается знаками. Вполне логично и компьютеру писать программу такими же знаками (привычнее) и даже короче:
                              positive? n
                              11 символов
                              

                              vs
                              N > 0
                              5 символов
                              

                              И «zero? n» vs «n == 0» — 7 и 6 символов соотв.
                              Больше букв, к тому же нематематического синтаксиса.

                              Фракталы — это, конечно, просто отлично. Но рекурсия для этого есть не только в лиспах (впрочем, в ракете интересный подход, когда можно объявить ф-цию и тем же самым её вызвать: по сути, это скрытый оператор goto). Но синтаксис… просто жуть. Столько лишних (скобочек (в [самых] разных (местах)) ('просто?) кошмар)

                              Теперь прикиньте сколько кода писать на JS пришлось бы для того же результата :-D

                              Давайте прикинем. Кофескрипт. И для чистоты эксперимента буду пользовать либу с тем же именем и теми же ф-циями:
                              require '2htdp/image'
                              sierpinski = (n) ->
                                if n == 0
                                  triangle 2, solid, red
                                else
                                  t = sierpinski n-1
                                  freeze above t, beside t, t
                              sierpinski 8
                              


                              Ракетная прога (без учёта "#lang racket") — короче на одну строку благодаря фиче вызова ф-ции вместе с определением. Размером же её код: 168 символов. Кофескриптовый код — 156.
                              Читабельность — разница налицо.

                              К слову, ракет — тоже мультипарадигмальный: «объектно-ориентированный, процедурный,
                              рефлективный, функциональный, логический, мета» (с педивикии).

                              Ну это всё мерянья одним место.
                              А главное: почему, если лисповые так уж хороши, то на них так… кхм… негусто софта?


                              1. Source
                                10.11.2016 14:56

                                это не смайлик, а 6 (ШЕСТЬ!!!) закрывающих скобочек.

                                И что? Скобки редактор прекрасно расставляет, когда пишешь на лиспе, на них вообще внимание не обращаешь.


                                И как они там выглядят? функциями «zero?» или «positive?»? — нет, математическим языком оно записывается знаками

                                Наличие вспомогательных функций не запрещает Вам написать (> n 0). Что читабельнее вопрос спорный.


                                Читабельность — разница налицо.

                                Имхо, не в пользу CoffeeScript… freeze above t, beside t, t — вообще нечитаемо. Но вопрос даже не в этом… для JavaScript я не видел библиотек, похожих на стандартную поставку Racket. Там придётся собирать учебный дистрибутив из г**на и палок, ой т.е. из npm-пакетов неизвестного качества.


                                К слову, ракет — тоже мультипарадигмальный: «объектно-ориентированный, процедурный, рефлективный, функциональный, логический, мета»

                                Есть такое… Хотя правильнее сказать, что он метаориентированный, а библиотеки для других парадигм — уже как следствие. Это даёт чуть большую чистоту. См. директиву в первой строке. Её можно заменить на другую и получить язык с другим набором концепций, т.е. они не навалены все в одну кучу. Например "#lang typed/racket"


                                1. pingping
                                  10.11.2016 15:59

                                  написать (> n 0). Что читабельнее вопрос спорный.

                                  Читабельность задаётся стереотипами, которые внедряются через образование. А это школа. А в школе — математика. И там оператор — между операндами.

                                  Имхо, не в пользу CoffeeScript…

                                  Конечно же, это дело привычки. Но чем меньше информации нужно получить (и обработать) для понимания смысла — тем читабельность лучше.
                                  Если не согласны — можем сравнить текст на С со скомпиленным бинарём в HEX'е ;)
                                  Алгоритм один и тот же, но букаф — очень разное к-во.

                                  freeze above t, beside t, t — вообще нечитаемо.

                                  Можно добавлять скобочек поначалу, пока появится привычка:
                                  freeze above t, beside(t, t)
                                  или
                                  freeze above(t, beside(t, t))
                                  или
                                  freeze(above(t, beside(t, t)))
                                  

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

                                  для JavaScript я не видел библиотек, похожих на стандартную поставку Racket

                                  Ну это вообще в стиле холивара «какой линух дистр лучше: с опенофисом по умолчанию или без». Так можно и какое-нить руби взять и померять пиписк*ми с ракетой или ещё чем.
                                  Благо, на дворе не оффлайн 90-хх и дистр с языком друг принёс на компакте. Что надо — берётся и ставится.
                                  И нужно сравнивать экосистемы языков. Ибо вот писать с нуля какую-нить либу — это вот уже боль.

                                  npm-пакетов неизвестного качества.

                                  Как я понимаю, каждую строчку исходников и качество кода ракет дистрибутива Вы лично проверяете перед использованием…
                                  Тогда молчу :)

                                  Её можно заменить на другую и получить язык с другим набором концепций, т.е. они не навалены все в одну кучу. Например "#lang typed/racket"

                                  Ну, если у скрипта поменять шабанг — то тоже можно получить очень даже другой язык :)
                                  #!/usr/bin/python
                                  #!/bin/bash
                                  #!/usr/bin/coffee
                                  #!/usr/bin/node
                                  #!/usr....
                                  


                                  1. Source
                                    10.11.2016 19:40

                                    Читабельность задаётся стереотипами, которые внедряются через образование. А это школа. А в школе — математика.

                                    У, Вы сами себя в угол загнали… см. выше коммент про ФП.
                                    Где императивное программирование, а где математика — это ж 2 диаметрально противоположных мира )))
                                    Вообще, про читабельность я сравнивал (positive? n) и (> n 0)…
                                    (n > 0) и (> n 0) на мой взгляд эквивалентны по читаемости, просто второй вариант непривычен, зато единообразен — функция всегда на первом месте.


                                    Алгоритм один и тот же, но букаф — очень разное к-во.

                                    Ладно, я следаю вид, что не заметил Ваш чит с подменой JS на кофе, т.к. очевидно, что в JS скобок было бы ничуть не меньше, чем в Racket.


                                    И нужно сравнивать экосистемы языков. Ибо вот писать с нуля какую-нить либу — это вот уже боль.

                                    У экосистемы Node.JS leftpad-синдром. При этом даже Вы преподносите число пакетов в N раз превышающее кол-во пакетов под Python как плюс. Вы даже не задумываетесь насколько это жирный минус. Задумайтесь, откуда берётся эта разница? Думаете JS решает в N раз больше задач, как бы не так...


                                    Ну, если у скрипта поменять шабанг — то тоже можно получить очень даже другой язык :)

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


                                    1. pingping
                                      10.11.2016 20:44

                                      программирование, а где математика — это ж 2 диаметрально противоположных мира )))

                                      Ну, вообще-то, это один из разделов математики :)
                                      Информатика (см: https://ru.wikipedia.org/wiki/Математическая_предметная_классификация )

                                      Ладно, я следаю вид, что не заметил Ваш чит с подменой JS на кофе

                                      Да какой чит? Конечно же кофескрипт. Чистый ЖС синтаксис — довольно уныл (те же сишные операторные скобки надо лепить — печаль).
                                      Но все плюсы всех отраслей, где живёт чистый JS — сохраняются. За сим, вполне допустимо говорить о жабоскрипте с более вменяемым синтаксисом (с сайта CS: The golden rule of CoffeeScript is: «It's just JavaScript»)
                                      Вы преподносите число пакетов в N раз превышающее кол-во пакетов под Python как плюс.

                                      Хорошо, может там не все пакеты тянут на серъёзные либы, а на pypi пусть все. Но сути это не меняет.

                                      Думаете JS решает в N раз больше задач, как бы не так...

                                      Речь об удобстве решения задач, гибкости (2 и больше синхронных либы в одном питон-процессе = боль) и куче мест применения.
                                      А с учётом того, что JS бегает в браузерах почти монопольно, то вполне можно попробовать и поутверждать, что таки больше. И даже если на серваке это пока не так, то тенденция — вполне позволяет делать такую ставку.


                                      1. Source
                                        10.11.2016 21:25

                                        Математическая_предметная_классификация

                                        Там по ссылке какая-то жесть… история, биология, геофизика и т.д. — это тоже разделы математики?
                                        ФП — это раздел дискретной математики, там всё понятно.
                                        Императивное программирование же искажает базовые математические понятия — функция, значение, etc.


                                        Да какой чит? Конечно же кофескрипт.

                                        С чего вдруг "конечно же"? Вы недавно про ES6/7 писали… А какая вам вообще печаль, что там в ES творится, если Вы по факту другой язык используете? Да и почему "конечно же кофескрипт"? Почему не TypeScript или не PureScript или не ClojureScript или ещё пара десятков вариантов? Вы свой личный выбор выдаёте за что-то дефолтное.


                                        Но сути это не меняет.

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


                                        1. pingping
                                          10.11.2016 23:28

                                          история, биология, геофизика и т.д. — это тоже разделы математики?

                                          хм… педивикия явно загнула.

                                          Императивное программирование же искажает базовые математические понятия — функция, значение, etc.

                                          Я несколько иначе смотрю на это.
                                          В моей вселенной математика — это язык описания общевселенской Меры (предельно обобщённой категории, широкоизвестной в пока узких кругах, гуглимо). Мера — это числа, которые определяют назначение всего для всего. Для материи мера — это матрица возможных устойчивых состояний (в частности таблица Менделеева, 5 агрегатных состояний вещества) и путей перехода между ними (типа, чтоб расплавить 1кг льда нужно N джоулей энергии и т.д.). Для информации мера — это система кодирования. Если есть информация, но нет её декодировщика — то «смотрю в книгу, вижу… буквы». Для запуска бинаря — нужен драйвер его формата, для чтения с ФС — нужен драйвер, который знает где там что, на один и тот же иероглиф если будет смотреть русский — то мало чего поймёт, а вот японец — куда больше (у него есть соотв. система кодирования в знаниях) ну и т.д.

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

                                          С чего вдруг «конечно же»?

                                          Потому, что там вкусный синтакс сахар.

                                          Вы недавно про ES6/7 писали…

                                          Если сильно нужны фичи из них — то пока CoffeeScript2 допиливают до их использования, отдельные модули можно писать на чистом JS — всё будет работать в одном процессе.

                                          Почему не TypeScript

                                          Это оно же, тока в профиль (+статик типы и ООП, которое уже и так есть в ES6)

                                          не PureScript

                                          Вижу, там сахар не такой сладкий.

                                          не ClojureScript

                                          «You must have Java 8 installed to proceed.»
                                          ={ }

                                          Вы свой личный выбор выдаёте за что-то дефолтное.

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

                                          придётся сталкиваться с буридановым выбором.

                                          Да ну, тоже мне проблема :)
                                          Уже отсеиваю их за считанные минуты. Зато есть выбор.

                                          Было куда хуже, когда программел асинхронность на питоновском твистеде и хотелось один в принципе обычный сетевой протокол поверх TCP, но его попросту не было на твистеде (обычно питон либы — синхронны, структура же либы для твистеда — кардинально иная, и переписывание == боль*боль).


                                          1. Source
                                            11.11.2016 01:21

                                            алгоритмы (программы) как таковые — это пути перехода между какими-то состояниями

                                            О, Вы мне напомнили ещё одно отличие между императивным и декларативным подходами. Императивный описывает процесс изменения состояния, а декларативный — процесс перехода между состояниями.


                                            Конечно же, это всё мои предпочтения. И всё, что я пытаюсь — это вызвать здравый огонь критики в адрес этого выбора.

                                            Ну как же я могу критиковать CoffeeScript, он же вдохновлён примером Ruby. А на Ruby я программировал аж 8 лет :-)
                                            Разве что злоупотребляете poetry mode..


                                            Уже отсеиваю их за считанные минуты. Зато есть выбор.

                                            Зашёл ради интереса на npmjs поискать клиент для redis и "193 results for ‘redis client’" и при этом даже сортировки по кол-ву звёзд нет… Уже начинаю завидовать Вашей скорости анализа сторонних библиотек.


                                            Было куда хуже, когда программел асинхронность на питоновском твистеде

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


                                            1. pingping
                                              11.11.2016 09:05

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

                                              Мой вариант:
                                              императивный — это сами переходы между состояниями (типа жд-рельсы между станциями),
                                              а декларативный — это сами состояния (станции).

                                              как же я могу критиковать CoffeeScript, он же вдохновлён примером Ruby. А на Ruby я программировал аж 8 лет :-)

                                              Ну так тогда должно быть проще критиковать ;)
                                              Кроме того, он и питоном вдохновлён (в частности, отступы == операторные скобки)

                                              клиент для redis и «193 results for ‘redis client’» и при этом даже сортировки по кол-ву звёзд нет…

                                              :D да, поисковик там тот ещё. Причём, звёзды — это, как я понял, вторичный параметр. Сортировка выдачи поиска идёт, похоже, по к-ву скачиваний за период.

                                              Уже начинаю завидовать Вашей скорости анализа сторонних библиотек.

                                              Да, собсно, ничё хитрого.
                                              Выдача отсортирована по к-ву скачиваний в сутки/неделю/месяц. На каждой странице либы справа её скачивания расписаны — и лидер очевиден (из первых трёх: «redis», «ioredis» и «redis-then» популярность в таком порядке и ниспадает). Ну на крайняк можно ещё кликнуть на ссылочку на github'е репы либы — там к-во наблюдающих, звёзд и форков тоже красноречиво говорит о популярности.

                                              GIL в текущих реалиях уже тоже шоустопер.

                                              Чессгря, в своё время был неприятно удивлён этим GIL'ом в питоне…

                                              эвент-луп JS от блокирующих операций пока не защищен и это тоже проблема.

                                              Это, скорее, фича :) опция выбора концепции скрипта, чем проблема.
                                              Если нужно простой консольный рукопускаемый скрипт (т.е. асинхронность в таком случае — часто просто помеха лишними буквами в реализации) — то для доступа к файлам можно пользовать синхронные версии операций и получить более наглядный алгоритм (как читается — так и выполняется), такой себе, «async/await».


                                              1. Source
                                                11.11.2016 12:24

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

                                                да, поисковик там тот ещё.
                                                Да нормальный поисковик, ну да, может половина выдачи там не является redis клиентами, но другая половина ведь реально является. Т.е., грубо говоря, есть 93 варианта, из которых Вы рассматриваете только 3. Но при этом говорите, что это мегапреимущество, что есть ещё 90 вариантов. Вам не кажется, что соотношение 1 к 30 выглядит как серьёзная проблема в экосистеме, в частности ведущая к сильному распылению усилий сообщества?

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


                                                1. pingping
                                                  11.11.2016 23:35

                                                  Но при этом говорите, что это мегапреимущество, что есть ещё 90 вариантов.

                                                  Мега — не мега, но берётся самая популярная либа и юзается. Если всё хорошо — значит хорошо.
                                                  Но если насчупываются грабли? — то прежде чем упираться в её дебаг — можно посмотреть на другие либы. Вполне возможно будут беспроблемные. Именно вот это вот — реальный плюс.

                                                  в частности ведущая к сильному распылению усилий сообщества?

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

                                                  А усилия любого сообщества — в способности договариваться. Если же люди не умеют этого — то всегда будет рознь. Это психология, невзирая на ЯП.

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

                                                  эээ… но у блокирующего кода нет ивент-лупа… А если есть — то это уже асинхронный код.


                                                  1. Source
                                                    12.11.2016 00:50

                                                    Но если насчупываются грабли? — то прежде чем упираться в её дебаг — можно посмотреть на другие либы.

                                                    OMFG, т.е. мы выбрали самое популярное и подходящее нам решение, но оно оказалось настолько бажным, что проще поискать что-то другое?.. Если бы я ещё не знал JavaScript, Вы меня такими аргументами убедили бы держаться от него как можно дальше :-)


                                                    Ну, демократия — это когда каждый сам имеет своё мнение. Не нравится кому-то всё существующее — он пишет своё.

                                                    Извините, но это не демократия, это детский сад на уровне "у кого куличик лучше вышел". Зачем тратить время на отдельный проект, когда можно за гораздо меньшее время добавить фичи/исправления в существующий? NIH-синдром или не в меру раздутое ЧСВ?


                                                    А если те авторы зашли в реальный тупик и не хотят из него выходить?

                                                    Да, такое бывает, но редко. Если авторы существующего решения не ответили в течении месяца на ваш pull request, то это действительно повод задуматься о создании отдельного проекта или форка. Но не убеждайте меня, что авторы всех популярных npm-пакетов забили на поддержку и месяцами на github не заглядывают. Я всё равно в эту версию не поверю :-)


                                                    А усилия любого сообщества — в способности договариваться. Если же люди не умеют этого — то всегда будет рознь. Это психология, невзирая на ЯП.

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


                                                    эээ… но у блокирующего кода нет ивент-лупа…

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


                                                    1. pingping
                                                      12.11.2016 12:38

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

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

                                                      А с Вашей логикой — выходит — нужно держаться подальше от языков, у которых есть хоть где-то альтернативные реализации чего-либо %)))
                                                      Т.е. если я напишу что-нить дублирующее на том же ракете и опубликую — Вам придётся держаться и от него подальше :D

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

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

                                                      Все люди умеют договариваться

                                                      :)
                                                      Если б это было так — то ситуация, когда все квартиры в подъезде годами платят кучи денег за еле-тёплые трубы вместо того, чтоб послать лесом центральную теплосеть из неэффективных дармоедов, скинуться, поставить котёл на подъезд и получить экономию с теплом в достатке — была бы невозможна.
                                                      Но угадайте: что происходит в реальности…

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

                                                      и почти все умеют здраво мыслить

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


                                                      1. Source
                                                        12.11.2016 13:28

                                                        Нет проблем в самой популярной либе — хорошо. А что делать, если есть?

                                                        Очевидно же, исправить и послать pull request. Почему надо сразу писать свою альтернативу?


                                                        А с Вашей логикой — выходит — нужно держаться подальше от языков, у которых есть хоть где-то альтернативные реализации чего-либо %)))

                                                        Нет, Вы передёргиваете… альтернативы — это хорошо, но ещё лучше когда альтернатив немного. Ну сколько есть способов написать клиент для redis (обычный, с поддержкой full-duplex, с поддержкой cluster, ну и парочку с учётом особенностей ЯП). В идеале хотелось бы иметь все варианты в одном пакете, но даже если будет 5 альтернатив — это ok.
                                                        Но что толку от большого кол-ва альтернатив, если 95% из них похожи как под копирку в техническом плане или никому не нужны?


                                                        Зачем убунта, если есть дебиан и редхаты и прочее.

                                                        Между прочим, это один из основных факторов, который сдерживает популяризацию Linux уже десятки лет. Если бы было меньше 10 дистрибутивов + узкоспециализированные, дело бы шло гораздо быстрее. Сравните с тем же Linux под мобилки… Есть Android и он вполне популярен. Да, там тоже лезут Firefox OS, Ubuntu Touch, MeeGo, etc. Но это уже чисто бизнес, все хотят кусок рынка.


                                                        Вы сегодня щедры на похвалы населению :)

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


                                                        1. pingping
                                                          12.11.2016 13:58

                                                          исправить и послать pull request. Почему надо сразу писать свою альтернативу?

                                                          А если pull-request размером больше, чем изначальная либа? %)))))
                                                          Кроме того, что делать, пока ждёшь приёмки пулл-запроса в мейн-стрим и нового релиза?
                                                          руками за собой по своим проектам таскать свои патчи? — зачем, если есть NPM? — опубликовал себе тихоньку то, что тебе надо и пользуешь.
                                                          Ан нет, набежали спорящие, нашли поиском то, что нечто «для себя» и давай дальше спорить %)

                                                          Но что толку от большого кол-ва альтернатив, если 95% из них похожи как под копирку в техническом плане или никому не нужны?

                                                          А вот, выше, у меня заранее и получился неплохой вариант ответа на этот вопрос.

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

                                                          это один из основных факторов, который сдерживает популяризацию Linux уже десятки лет

                                                          ему всего-то 25 %)

                                                          дело бы шло гораздо быстрее

                                                          А кому это было нужно, это быстрее? Кто субъект управления этим процессом? — никто?
                                                          Ну так какие тогда вопросы :)

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

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

                                                          Есть Android и он вполне популярен

                                                          Ну, помилуйте, он не просто «есть». Он чуть ли не монополист на просторах вариантов железа (огрызки же никаких вариантов никому не предлагают) и очень настойчиво продвигается. И кто его продвигает — тоже субъекта видно.

                                                          Но если отрицать их наличие в принципе, то это ж дурдом получится )))

                                                          Ну так оглянитесь вокруг :) Так оно и есть: дурдом.
                                                          Добро пожаловать на Землю…


                                                          1. Source
                                                            12.11.2016 15:00

                                                            руками за собой по своим проектам таскать свои патчи? — зачем, если есть NPM? — опубликовал себе тихоньку то, что тебе надо и пользуешь.

                                                            А что npm разве не позволяет подключить репозиторий без создания пакета?


                                                            Примерно то же происходит и на гитхабе. Куча практически копий.

                                                            Гитхаб не считает форки за отдельные проекты. Так что там всё ok. В принципе, мне без разницы хотят публиковать каждый чих в npm — пусть публикуют. Я просто Вам намекаю, что засорение репозитория пакетов — это минус, а не плюс.


                                                            Я, кстати, посмотрел про "закон времени". Собственно, там основная мысль про нарастание информационного шума. Будь то СМИ, соц.сети или npm. Объём знаний не увеличивается так быстро, как они хотят показать. Увеличивается объём мусора. Научить выкапывать из под этого мусора неизменные концепции — это и есть задача современного образования. Если мы поддерживаем у самих себя и у детей иллюзию постоянной гонки — ничего хорошего из этого не выйдет.


                                                            Условно говоря, я Вам говорю:
                                                            Посмотри, какие классные концепции люди сформулировали в 50-x — 80-x годах прошлого века. Вот языки, в которых можно их пощупать на практике. Если их изучить, то ты качественно вырастешь как профессионал.


                                                            А Вы отвечаете:
                                                            Отстань, у меня тут ES7 вышел…
                                                            Мне надо срочно заменить Math.pow(x, y) на x**y.


                                                            Утрировано, конечно. Но смысл именно такой.
                                                            В итоге для Вас мейнстрим выглядит как бесконечное развитие, а для меня как вялотекущая имплементация концепций 30-50-летней давности.
                                                            Которые, блин, неизменны, как ассоциативность сложения.
                                                            Иногда смотришь на мейнстрим-языки и думаешь "ребята, а вы ну хоть что-то новое придумали за предыдущие 20 лет?".


                                                            Кто субъект управления этим процессом? — никто?

                                                            Коммерческие дистры Linux тоже есть, но это уже сильное отвлечение от темы.


                                                            1. pingping
                                                              12.11.2016 22:04

                                                              А что npm разве не позволяет подключить репозиторий без создания пакета?

                                                              А действительно… умеет. И забыл как-то. Вполне возможно, что не я один такой :)

                                                              засорение репозитория пакетов — это минус, а не плюс

                                                              Засорение — да. А отсутствие фильтарции (цензуры) — не всегда. Тут уж зависит от типа психики посетителя репозитория: если человек предпочитает сам определять для себя параметры и потребность — то ему лучше, чтоб был выбор шире и как можно менее искуственно ограничен, если же человек предпочитает опираться на заготовленное за него мнение/решение/софт — то он будет рад, если выбирать особо не придётся.

                                                              Объём знаний не увеличивается так быстро, как они хотят показать.

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

                                                              В 70-х не было понятия об интернетах всяких, о компах мало кто слышал. прошло каких-то 40 лет (всего-то 2 поколения вступили в жизнь) — и технологическая сфера обновилось до неузнаваемости. Никогда до этого прежде никакие 40 лет не приносили таких громадных перемен. И всё мусор?
                                                              Вообще-то, мы тут с Вами счас обсуждаем какую часть из этого «мусора», выдуманного за последние 40 лет, стоит преподавать новым поколениям.

                                                              На западе тоже есть некое понимание об этом (ролик «Знаете ли вы?» https://www.youtube.com/watch?v=xOsL9GIROLg)

                                                              Объём мусора без кавычек, конечно же, тоже растёт (объём инета удваивается счас каждые 2 года, или где-то так). Конечно же, далеко не всё там полезные знания :) неск процентов только. Но когда в истории людей были такие скоростя роста объёмов информации?

                                                              Научить выкапывать из под этого мусора неизменные концепции — это и есть задача современного образования.

                                                              Это да. И самой неизмнной концепцией является достаточно общая (в смысле универсальности применения) теория управления.
                                                              Все компы и парадигмы программирования — они уже весьма переменны.

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

                                                              Иллюзия? Т.е. экспоненциального роста объёмов инфы нет?
                                                              И какой гонки?
                                                              Рост скорости обновления информации — явление объективное. Т.е. хочешь — не хочешь, а оно имеет место.
                                                              И вопрос стоит лишь: как себя вести и что делать, чтоб не оказаться на обочине истории, не сумев совладать с этим явлением?
                                                              Думаете, не стоит детям рассказывать об этой доминанте сегодняшнего дня? Плюс о том, как со всем этим совладать.

                                                              Если их изучить, то ты качественно вырастешь как профессионал.

                                                              Вижу, Вы имеете дело с образованием, и далеко не только со стороны студента.
                                                              Ну так должны знать, что мотивация «вам это в будущем понадобится» — крайне неэффективна, даже если давать реально полезные вещи (кстати, почему так?)

                                                              А Вы отвечаете: Отстань, у меня тут ES7 вышел…

                                                              Ну понятно, сам написал, сам закритиковал :) (я то такого не говорил)
                                                              Да и не очень понятно как у Вас получается пытаться противопоставлять разнокачественности: парадигмы программирования с конкретными языками… Причём, мне отводится роль строго конкретно-языкового :) Будто слова ООП я не слышал, принципов не знаю и рассказать о них не могу…

                                                              В итоге для Вас мейнстрим выглядит как бесконечное развитие, а для меня как вялотекущая имплементация концепций 30-50-летней давности.

                                                              Т.е. Вы способны на одних лишь концепциях, без практической реализации в ЯП творить софт?
                                                              Или на тех же языках 50 летней давности возможно удовлетворить запросы рынка?
                                                              А если нет — то почему Вы критикуете улучшения? Или принцип async/await был расписан 50 лет назад?
                                                              Или какой-то асинхронный язык существует с тех пор, идеальный и неизменный? (как классика АвтоВАЗа :)
                                                              Почему тогда Вы противопоставляете концепции их реализации? Или не нужно изучать реализации? Пусть дети сами себе языки пишут с нуля?
                                                              Вполне логично, что индустрия всё больше и больше понимает какие нужны концепции и как их лучше всего записать, каким синтаксисом. И языки меняются в эту сторону. Что здесь плохого? — мне непонятно…

                                                              «ребята, а вы ну хоть что-то новое придумали за предыдущие 20 лет?»

                                                              Подразумевается, что Вы бы хотели от них новых именно концепций. Технологии на их основе — не в счёт?
                                                              Но с Вами никто спорить не собирается, что в 2+2=4 выдумать чего-то нового — сложно.
                                                              О чём Вы тогда вообще?
                                                              Мне думается, Ваши претензии как раз в том, что кто-то посмел внедрить какую-то концепцию в какой-то «не тот» язык и имел смелость сказать об этом (нахал, буквально!). «Ведь это наша концепция», «мы её приватизировали!», «не сметь её использовать!», «придумывайте свою алгебру! а мы посмотрим как у вас это выйдет».
                                                              Не думаю, что это конструктивная позиция.

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


                                                            1. pingping
                                                              12.11.2016 22:32

                                                              Извините, не удержался :)

                                                              «ребята, а вы ну хоть что-то новое придумали за предыдущие 20 лет?»

                                                              «Интел выпустил новую линейу процов?? — Пффф!!! Дети! Машина Тьюринга была выпущена полвека назад!»


                                                              1. Source
                                                                12.11.2016 23:41

                                                                Т.е. тысячу лет назад...

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


                                                                Но когда в истории людей были такие скоростя роста объёмов информации?

                                                                И что? Скорость роста объёмов информации не равна скорости роста знаний и даже не пропорциональна. Вы же понимаете, что более 95% объёма современной информации — это фотки и видосики, из которых 99% даже не учебные, не говоря уж о том, чтобы они несли какие-то новые знания. А оставшиеся 5% почти полностью заняты сектором BigData, который собирает информацию о действиях пользователей на сайтах и т.п.
                                                                Стоит ли рассказывать детям, что сейчас модно фоткать еду, снимать котиков, собирать статистику и для этого надо дофига HDD? Да можно, только причём тут обучение познанию?


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

                                                                Ну, я скорее имею дело с менторством, как раз как 1000 лет назад xD


                                                                мотивация «вам это в будущем понадобится» — крайне неэффективна

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


                                                                Будто слова ООП я не слышал, принципов не знаю и рассказать о них не могу…

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


                                                                Т.е. Вы способны на одних лишь концепциях, без практической реализации в ЯП творить софт?

                                                                ЯП в данном вопросе — это просто синтаксис для выражения концепций, синтаксис учится на 3-7 дней, это не проблема. Концепции же надо учить лет 7. И я сам ещё в них не гуру, т.к. года 3 назад ещё считал аналогично Вам, что всё развивается бешенными темпами. И я рад, что пришло осознание того, что это совсем не так. Конечно было бы круто если бы это ещё в школе объясняли, можно было бы сэкономить прилично времени, не изучая ненужное.


                                                                Или принцип async/await был расписан 50 лет назад?

                                                                Если точно, то в 1976 году. А что?


                                                                Мне думается, Ваши претензии как раз в том, что кто-то посмел внедрить какую-то концепцию в какой-то «не тот» язык и имел смелость сказать об этом

                                                                У меня вообще претензий к языкам нет. Меня даже вполне устраивает, что новых концепций не появляется… Не придётся постоянно изучать что-то концептуально новое, достаточно один раз изучить существующие наработки. Объём немаленький, но вполне посильный и существенно меньше, чем в других науках. А потом можно и самому о чём-то концептуально новом подумать xD


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

                                                                Те, кто реально ищет, не ленится знакомиться с разными вариантами. А большинство просто ждёт пока в их дефолтном ЯП реализуют интересную концепцию хоть в каком-то виде. Даже если косячно реализуют, восторгам не будет предела, см. для примера анонсы pattern matching в C#. Мне в принципе параллельно, пусть радуются. Просто я вижу пути развития получше, чем текущий. Но для этого не надо циклиться на одном ЯП или на одной парадигме, не надо надевать шор.


                                                                «Интел выпустил новую линейу процов?? — Пффф!!! Дети! Машина Тьюринга была выпущена полвека назад!»

                                                                Предыдущие десятилетия шёл процесс технологического усовершенствования в плане кол-ва транзисторов на единицу площади. Сейчас они упёрлись в физическое ограничение и как бы всё на этом. Т.е. уловите разницу, развитие текущих процессоров — количественное (быстрее/компактнее/etc.). Качественным развитием будут квантовые компьютеры или что-то подобное. Да и это уже про физику, а не про Computer Science.


                1. qrKot
                  08.11.2016 06:01

                  >> никому кроме автора он не нужен будет.
                  Ну, собственно, никому больше и не должен быть нужен. Ну, возможно, одноклассникам. Возможно, ученика за это симпатичная одноклассница поцелует. Почему бы и нет?
                  Давайте отвлечемся от чисто теоретической составляющей.
                  Представим все того же Василия, в меру одаренного ученика средней школы, среднестатистической не особо выделяющейся внешности, тайно влюбленного в одноклассницу Катю. Приходит он домой после уроков (крайним как раз оказался урок информатики) с твердым желанием творить. Ставит себе ту же IDE, что в школе (бесплатную, без смс), и, применяя полученные там же знания, пишет интерактивное-приложение открытку-признание в любви. Прикольно же?
                  Но тут мы выясняем, что учат его на Pascal. «Окей, нам нужна Delphi!» — решает предприимчивый Василий. Идет он, значится, на сайт Embracadero, сразу жмет «Купить» (мальчик у нас честный, воровать не привык) и… охреневает. Первая попавшаяся ему на глаза цифра: 331 999,00 руб. Можете сами сходить на сайт, проверить.
                  Не, ребят, вы серьезно? Мне почему-то кажется, что есть просто mast have условия для преподаваемой вещи, как то:
                  1. Возможность поставить/использовать то же самое дома, без лишних заморочек, без рекламы и без смс.
                  2. Непривязанность к единственному вендору, способному превратить светлые позывы ученика в тыкву единственным волевым экономически-обоснованным решением.
                  3. Наличие экосистемы вокруг. Важно, чтобы материалы по языку/среде/экосистемы были доступны, по возможности бесплатны, вменяемы, полны. Да и спросить чтобы было у кого.


                  1. pingping
                    08.11.2016 09:40

                    Золотые слова!

                    Только вот Ваше предложение идёт вразрез с интересами конторы _название_конторы_, ибо планы на прибыль и т.д.
                    Потому то её лоббисты и пообсели образовательные министерства и ведомства.

                    Ну и, как _следствие_ — уже выращены поколения на закрытых платных программках… И это — проблема.


                  1. Source
                    08.11.2016 11:27

                    Скачает Lazarus, хотя любая IDE слабо поможет в рамках описанной мотивации… настоящая розочка с мороженкой и то на порядки эффективнее :-)


                    1. pingping
                      08.11.2016 12:33

                      Да уж… так и растут поколения, занятые мыслями только о противоположном поле и размножении…


                      1. FForth
                        09.11.2016 17:34

                        C какого возраста гормоны перестают давить на мозг?

                        P.S. Посмотрите познавательный фильм «Мечтатели» 2003г. от Бертоллучи. :)
                        https://zona.mobi/movies/mechtateli


                        1. pingping
                          10.11.2016 09:04

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


        1. evseev
          05.11.2016 08:10

          Вы предлагаете Haskell как один из подходящих? Хорошо. Расскажите мне как на нем писать циклы. Или циклы не нужны? ;)

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

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

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


          1. pingping
            05.11.2016 11:14

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

            Правильно. Уметь программить — это не опция, а насущная потребность сегодняшнего дня. Даже если зарабатывать на жизнь чем-то другим.


            1. Source
              05.11.2016 14:27

              Уметь программить — это не опция, а насущная потребность сегодняшнего дня.

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


              1. pingping
                05.11.2016 16:30

                Сказать можно всё, что угодно, конечно.

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


                1. Source
                  05.11.2016 23:08

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


                  1. pingping
                    06.11.2016 03:32

                    «Если бы у рыб был мех, у них были бы блохи, а блохи...»

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

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

                    Но от этого они же не исчезают и не перестают работать…
                    А значит, знать их важно и нужно.

                    Уровень развития интеллекта старшеклассников уже достаточен для некоторых видов работы. А если вспомнить Великую Отечественную, то дети в партизанах показывают возможности генетики нашего вида даже в раннем возрасте. Так что, «недалёкость» большинства нынешних школьников — не их вина. Что им будет под силу, а что нет — зависит от того, чему и как их учат. Если учить алгоритмизации и логике — они будут в состоянии ими оперировать. Если ж не учить — то можно сетовать, что для них это недостижимо.

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

                    Если б это было так — то компьютеры бы максимум, могли песенки и кино крутить. Больше их применить было бы некуда.
                    Однако, всё обстоит несколько иначе.
                    Почему? — просто нечёткая логика очень даже хорошо реализуется через булевую. И это не заслуга компов как таковых. Во Вселенной всё квантуется, т.е. чётко разделимо на нечто одно и на нечто другое. И если кажется, что что-то не квантуется — то нужно просто увеличить масштаб и приглядеться глубже.
                    Булевая логика не просто «за пределами компьютеров относительно редко встречается», на ней основано всё, в том числе и нечёткая логика.

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


                    1. Source
                      06.11.2016 15:56

                      > Уровень развития интеллекта старшеклассников уже достаточен для некоторых видов работы.

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

                      > нечёткая логика очень даже хорошо реализуется через булевую.

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

                      Ну и немножко из классики жанра
                      В одном банке работал программист, исправно ходил на работу…
                      Hо вдруг не пришел, день нет, второй, народ заволновался, приходят к нему домой, стучат… нет ответа, ломают дверь, находят его синим в ванной. А в руках флакон шампуня с инструкцией на обороте:
                      1. Hанести шампунь на голову
                      2. Помассировать
                      3. Через 5 минут повторить…

                      Жена посылает программиста в магазин:
                      — Купи батон колбасы, а если будут яйца, купи десяток!
                      Приходит программист в магазин.
                      — У вас яйца есть?
                      — Есть!
                      — Дайте мне 10 батонов колбасы!


                      1. Danov
                        06.11.2016 17:10

                        Вы слишком категоричны насчет сложности основ нечеткой логики (Fuzzy Logic, FL). Нечеткую логику, как и системную динамику можно попробовать давать в школе. Может даже в средней школе.

                        Помнится, в начале/середине 90х годов в Компьютерре была статья Маслова(?) (из МГУ ВМК?), где он научно-популярно рассказывал про нечеткую логику. И, если не путаю, именно там и говорилось, что система управления на нечеткой логике может быть разработана старшеклассниками. Вероятно, вы смотрите на FL через призму Высшей Математики, тогда как знание теории дифуравнений не нужно для использования методов системной динамики. Так же и с FL.


                        1. Source
                          07.11.2016 00:28

                          Спору нет, упростить и в каком-то объёме рассказать можно почти всё, что угодно. Но в данном вопросе я не вижу связи с информатикой… да, нечёткая логика применяется в нейронных сетях и ещё в нескольких областях, но это уже не основы информатики. Давайте по-честному, этими темами от силы 0.1% профессиональных программистов владеет.


                          1. Danov
                            07.11.2016 14:00

                            Давайте по-честному, этими темами от силы 0.1% профессиональных программистов владеет.
                            Это не аргумент, чтобы не изучать. Нечеткая логика это совсем не нейронные сети. Область пересечения этих областей незначительная.

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

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


                            1. Source
                              07.11.2016 19:40

                              Это не аргумент, чтобы не изучать.
                              Если речь о курсе информатики, то вполне аргумент. Хотя Вы и тут скажете, что всё взаимосвязано :-)


                            1. pingping
                              08.11.2016 02:08

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

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

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

                              Да, неплохо.
                              Но давать отдельные категории из теории управления — это такое же издевательство, как делить математику на «высшую»/«низшую», до тошноты заучивая вторую, ни слова не говоря о первой. На выходе: вроде и математику ученик знает… до тех пор, пока не посмотрит на олимпиадные или вступительные задачи…
                              Встаёт вопрос: кого и зачем готовит такая школа?
                              Ну и теорию управления тоже нужно давать полностью. Её там немного, зато всё остальное в жизни будет ложиться стройно, связно и быстро.


                          1. pingping
                            08.11.2016 02:03

                            упростить и в каком-то объёме рассказать можно почти всё, что угодно.

                            Во, минуту назад я был именно об этом.


                      1. pingping
                        08.11.2016 02:01

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

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

                        «Всё это» можно дать в разной детальности. И да, я считаю, что школа — это то место, где нужно дать представляния обо всех отраслях деятельности людей. Ну а кому уж что понравится — дальше пойдёт изучать узконаправленно.
                        И математика не должна быть исключеним тут. Нужно рассказать: обо всех разделах математики и вкратце их суть. Чтоб было представление. Потому, разделять математику на некую «высшую» и некую «низшую» — это глупость.
                        «Теория вероятностей» и матстатистика — весьма плотно используются в бизнесе. Это инструменты для изучения общества и поиска ЦА.
                        И если выпускник школы не имеет даже представления об этих разделах — то он заведомо в заложниках (ищет работу) у тех, кто знает.

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

                        «Может быть» == вероятность самореализации строго больше нуля.
                        «да нет, наверное» == вероятность самореализации строго меньше 0,5


                        1. Source
                          08.11.2016 11:41

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

                          «Может быть» == вероятность самореализации строго больше нуля.
                          «да нет, наверное» == вероятность самореализации строго меньше 0,5
                          В булевой логике нет понятия «вероятность».


                          1. pingping
                            08.11.2016 12:36

                            Компьютер как раз всегда исполняет чёткие алгоритмы, заложенные в него. Даже если сломан и «не включается» — то это всё равно исполнение алгоритмов, заложенных в него.
                            Человек, к слову, тоже всегда работает по алгоритмам. Другое дело откуда они взялись у него в голове.

                            В булевой логике нет понятия «вероятность».

                            Это просто вещественная переменная нужной точности.
                            А уж работать с переменными булевая логика может.


                            1. Source
                              08.11.2016 21:02

                              Это просто вещественная переменная нужной точности.
                              Поясните… Вероятность — это не просто вещественная переменная. Допустим для 0.5 она означает, что обе ветки и if и else исполняются равновероятно. Булева же логика может исполнить только одну ветку.
                              Обычно вероятность пытаются эмулировать через random, но это ничего общего с человеческой логикой. Её эмулируют нейросети, но пока на очень-очень базовом уровне.


                              1. pingping
                                09.11.2016 09:21

                                Допустим для 0.5 она означает, что обе ветки и if и else исполняются равновероятно.

                                Ну да. А боле никаких данных то и нет. Только вот такое вот высказывание и возможно выжать.

                                Булева же логика может исполнить только одну ветку.

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

                                Если я Вас правильно понял, то
                                эмуляция вероятности через random — это введение новых искусственных данных в задачу. Но это, скорее, тестирование алгоритма, в котором участвует некая вероятность: правильно ли будет отрабатывать алгоритм при разных входных вероятностях (обычное unit-тестирование).


                                1. Source
                                  09.11.2016 12:55

                                  эмуляция вероятности через random — это введение новых искусственных данных в задачу.

                                  Нет, это просто наиболее простой способ выполнить ветку алгоритма с какой-то вероятностью, отличной от 0 и 1.


          1. Source
            05.11.2016 14:19

            Вы предлагаете Haskell как один из подходящих? Хорошо. Расскажите мне как на нем писать циклы. Или циклы не нужны? ;)

            1) Чтобы прояснить, я предлагаю использовать несколько языков, каждый для демонстрации отдельных концепций в чистом виде. Вы знаете язык, который лучше Haskell подходит для демонстрации алгебраических типов данных и отделения побочных эффектов? Это концепции, которые полезны сами по себе и даже если человек станет программистом они пригодятся в любом языке. Сейчас большая проблема в том, что программисты не хотят развивать мышление… Многие пару месяцев поучившись на курсах сайтики делать, с горем пополам трудоустроившись после этого, считают что дело в шляпе, забывая что они находятся на уровне первого семестра ПТУ.


            2) Теперь про циклы… Циклы — это абстракция, которая была удобна на определённом этапе развития индустрии. Сейчас её спокойно можно считать устаревшей. Все мейнстрим языки переползли сначала на итераторы, а потом на функции высшего порядка, генераторы списков и рекурсию, которые в Haskell изначально. Я не исключаю рассказ про циклы в рамках рассмотрения С, но в целом — да, они не нужны уже сейчас в 99% случаев.


            Слишком уж хорош Python для своей ниши

            То же самое про Perl говорили 20 лет назад. Когда дети закончат школу, выйдет какой-нибудь Python 4, на который ещё 10 лет переходить будут… Спасибо, но ну нафиг )))


            Java умрет, как ей пророчат с 90-х годов прошлого века

            C самого рождения или даже чуть раньше? o_O
            Если серьёзно, то Java как виртуальная машина разумеется протянет ещё 10 лет точно, но как язык — разве что для поддержки legacy. Я стараюсь в этот стек вообще по минимуму заглядывать, но очевидно ведь, что попытки сделать лучшую Java в виде Scala, Groovy, Clojure, Ceylon, Kotlin, etc. рано или поздно увенчаются успехом.


            А для того, кто только начинает количество вводимых символов все-таки важно.

            Это Вы решили аргументов в пользу Haskell накидать? :-)


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


            1. evseev
              05.11.2016 21:35

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

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

              Java ведь 94 года рождения. Вот как появилась, так на нее и бухтят. В то время компы были еле-еле живыми. Мой первый комп mp3 не успевал расшифровывать. А жаба памяти жрала немерянно, тормозила и еще и глючила.

              Так в том-то и дело, что на Java написано уже столько, что переписать уже точно не получится. Поэтому специалисты нужны будут всегда. И не где-нибудь, а в корпоративном секторе. А это деньги. 10 лет это вообще для Java не срок. А с учетом того, что Java уже очень даже прилично допилили что бы ее кто-то заменил из новичков? Он должен быть не просто хорош, а божественен. И самое главное он должен давать неоспоримые преимущества для корпоративного сектора что бы он на него переполз. Думаете это возможно?

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


              1. Source
                05.11.2016 23:45

                Я бы в школе учил как решать обычные задачи автоматизации и обработки.

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


                Perl, к моему большому сожалению, заглох

                Так вон же, Perl 6 вышел, только я почему ты сомневаюсь, что Вы забросите Python и вернётесь обратно.


                А смысл в концепциях без языка?

                Развитие мышления. Это гораздо полезнее, чем любой конкретный язык.


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

                Не понимаю, Вы ж сами написали, что они переходят на Python… Значит ничто им не помешает и перейти с Python на что-то другое. Это всё лишь вопрос времени. Пока в индустрии консенсусом на тему языков программирования даже не пахнет. А значит всё ещё не раз поменяется.


                Так в том-то и дело, что на Java написано уже столько, что переписать уже точно не получится.

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


                В общем-то тут 2 варианта: либо всё стабилизируется как есть, либо текущие мейнстрим-языки уйдут в узкие ниши вместе со всем legacy… В первый вариант мне лично слабо верится. А если какие-нибудь квантовые компьютеры вытеснят обычные, то вообще прощайте все популярные ЯП, привет Quipper )))


                1. qrKot
                  07.11.2016 06:12

                  >> Развитие мышления. Это гораздо полезнее, чем любой конкретный язык.
                  В сугубо концептуальном смысле я с вами склонен согласиться. Только мы тут про преподавание в школах говорим. Мотивация у вас как-то выпала. «Развитие мышления», «Потом будет легче», «В жизни пригодится» — очень слабые мотиваторы. Для детей/подростков профит должен быть «здесь и сейчас». «Пропыхтеть» полтора часа за каким-то алгоритмом и через секунду после запуска программы увидеть ожидаемый вывод — это какой-никакой мотиватор. Убить полтора часа над схематической записью в тетради без возможности проверки «выхлопа» алгоритма — на мотивацию не похоже.

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


                  1. Source
                    07.11.2016 11:35

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

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


                    1. pingping
                      08.11.2016 02:28
                      -1

                      хотя бы иллюзия понимания будет

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

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


                    1. qrKot
                      08.11.2016 06:15
                      +2

                      >> Так я и не предлагал в тетрадке программировать, хотя мы в школе именно этим занимались первые полгода в 10-м классе, а потом нас к Агатам допустили, вот такая веселуха была в начале 00-х.
                      Вероятно, я более везучий. У нас в 90-х каким-то образом появились уже «прогрессивные» «последней модели» 386-е. Дома у меня тогда AMD K6 стоял, правда…
                      >> Опыт мне подсказывает, что признанные решения редко совпадают с первым, что в голову пришло.
                      Мне вот кажется, что попытка решить самостоятельно «до» может дать нехилое понимание не только того, что мы используем, но и ответить на извечные вопросы «зачем» и «почему». Знаете, когда-то я узнал, что такое РСУБД. И вот решил я это свежеприобретенное знание где-то непременно задействовать. SQL мне в руки и поехало. Прямо в коде запрос, потом еще один, потом добавляем табличку, переписываем запросы, потом переделываем тут и там. Да, на любом языке можно писать на PHP.
                      На определенный момент я самостоятельно пришел к таким вещам, как «соглашение об именованиях», причесал базу. Стало легче. Дальше следующий шаг — конктруктор запросов. Потом приведение структуры классов в соответствие со структурой базы… А потом я узнал, что такое ORM. Вы знаете, я почему-то сразу уловил суть нового инструмента и я заранее знал ответы, почему оно именно так, и зачем эта штука существует…


                      1. Source
                        08.11.2016 19:53

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


                  1. pingping
                    08.11.2016 02:26

                    Для детей/подростков профит должен быть «здесь и сейчас»

                    Плюсую!
                    Причём, это справедливо и вообще для всех. Просто «здесь и сейчас» на разном уровне развития — разное. Для кого-то и 5 минут поработать на результат боль, а для кого-то и на результат в поколениях не вопрос (где-то в каких-то тибетах серъёзные решения принимаются с учётом интересов 7 (семи!) поколений на будущее).

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


            1. pingping
              06.11.2016 03:43

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

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

              я за изучение концепций, а не конкретного языка программирования.

              А вот это вот правильно.
              Только вот циклы — как раз одна из таких концепций, о которой не рассказать, выходит, нельзя.


              1. Source
                06.11.2016 16:14

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

                Но компу всё равно придётся элементы перебирать по очереди, даже если высокоуровневый язык позволяет об этом не знать.
                И что? Причём тут циклы?
                На уровне ассемблера есть только goto (jmp, loop) и goto по условию (jpe, jnz, ...). Ну, реально нет циклов в архитектуре современных компьютеров, что тут поделать…

                Нового железа уже не будет и всё можно будет писать на высокоуровневых языках?
                Я уже чуть выше писал, что новое железо вообще может принести новую архитектуру и будет вам Quipper вместо C. Только опять же причём тут циклы?

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


                1. qrKot
                  07.11.2016 06:26

                  Извините, перестал вас понимать.
                  Как «функции высшего порядка (map, filter, reduce), генераторы списков и рекурсия» сочетается с «C, Pascal, Smalltalk, Haskell, Racket»


                  1. Source
                    07.11.2016 11:39

                    Изначально этот список языков был приведен не с мыслью выбрать что-то одно… А продемонстрировать разные концепции на наиболее подходящем языке, т.е. разные языки для разных концепций. С цитатой прекрасно сочетаются Haskell и Racket.
                    А конкретно эта ветка про то как «сложно» в Haskell без циклов.


                1. pingping
                  08.11.2016 02:49

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

                  Что заинтересует школьников — зависит от взрослых (учителей и родителей). И если их не заинтересовывать фундаментальными вещами, а лишь частными их производными, созданные кем-то [за окияном], то не придётся жаловаться на то, что наша страна плетётся в хвосте у других, и сама чего-то новенького придумать не может.
                  Почти как про капусту детям рассказывать. Извращать их мировоззрение.
                  А когда они где-то на улице услышат, что всё было на самом деле неколько не так и перестанут с родителями обсуждать интересующие их вопросы (а заинтересовать их может ой как много чего, иногда нехорошего...) — то кому выставлять претензии?

                  На уровне ассемблера есть только goto

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

                  Цикл — это тип блока алгоритма. А алгоритмы работают и вне компьютеров. И когда лучше всего рассказать об этом, если не в школьной программе?


                  1. Source
                    08.11.2016 11:53

                    Цикл — это тип блока алгоритма. А алгоритмы работают и вне компьютеров. И когда лучше всего рассказать об этом, если не в школьной программе?
                    Я ж включил Паскаль для объяснения структурного программирования. Не нравится Паскаль, объясняйте на РАЯ, без разницы.


                    1. pingping
                      08.11.2016 12:38

                      Неужели нельзя на чём-то реально и массово востребованном на рынке нельзя объяснять?
                      Вы та боитесь конкуренции со стороны молодёжи, что предпочитаете их учить неактуальным вещам?


                      1. Source
                        08.11.2016 20:07

                        Неужели нельзя на чём-то реально и массово востребованном на рынке нельзя объяснять?
                        Учить надо на том, что проще понять.
                        Конкуренция со стороны Java и Python-программистов мне параллельна, пусть поддерживают legacy хоть ещё 100 лет )))
                        Я вижу, что они уже неактуальны для многих новых проектов, поэтому для меня эти 2 языка выглядят как захламлённый Паскаль :-)
                        Если цель обучать под JVM, то любой из Kotlin, Scala, Clojure будет лучше Java.
                        А Python по моему прогнозу лет через 5 останется только как инструмент для сисадминов… всякие сценарии автоматизировать. Конечно, я могу ошибаться, но это мы узнаем только в 2021 году :-)
                        Ну а лет через 10 актуальными будут только те языки, которые позволят эффективно использовать сотни ядер и квантовые компьютеры, т.е. чисто декларативные. Все мои рекомендации исходят из этого убеждения.


                        1. pingping
                          09.11.2016 09:29

                          Ну, ничего удивительного, синхронные языки уходят в прошлое (и питон в их числе, хоть последние версии и имеют async, но уже поздно).

                          А сотни ядер — это уже актуально, и 10 лет ждать незачем :)
                          Ну и если квантовые компутеры (это те, которые, якобы, не тратят время на вычисления?) шагнут в реальную жизнь — то всё равно у людей есть алгоритмы, которые будет нужно выполнять. Даже без затрат времени алгоритм не перестаёт быть алгоритмом. Чистая декларативность, как я понимаю, этого не обеспечивает?


                          1. Source
                            09.11.2016 13:12

                            А сотни ядер — это уже актуально, и 10 лет ждать незачем :)

                            Ну я пока на практике видел серваки только с 12 ядрами… Но тем не менее, этот тренд уже действительно очевиден.
                            Вот и смотрите, как эффективно занять 100 ядер вычислениями и не попасть на race condition? Нужны иммутабельные данные. В каких языках они есть? Erlang, Lisp, Haskell и тому подобное.
                            Да можно и по-другому, но достаточно сравнить привычную для Java модель с потоками/ мьютексами и модель акторов… и становится очевидно, что Java пора на пенсию. Она конечно сопротивляется, но генерирует больше аргументов в пользу Scala и Clojure, чем за саму себя.


                            это те, которые, якобы, не тратят время на вычисления?

                            В смысле? Время всё равно тратиться будет, только меньше :-)


                            Чистая декларативность, как я понимаю, этого не обеспечивает?

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


                            1. pingping
                              10.11.2016 10:09

                              Вот и смотрите, как эффективно занять 100 ядер вычислениями и не попасть на race condition? Нужны иммутабельные данные.

                              Ну и для эффективного использования 100 ядер нужно просто обеспечить беспроблемность в их совместной работе. Если имеют место общие данные — то нужна синхронизация (кстати неизменные переменные — это частный случай, когда запись в переменную вообще запрещена всегда; кстати, оператор const в других языках никто не отменял).

                              Так что только из-за иммутабельности выбирать для проекта (в том числе обучение) язык 3-го эшелона — неразумно. Объём сторонних библиотек и прочей инфы — всё это списать со счетов популярных языков только из-за одной фичи — не вариант. В том числе изучать редкий язык только из-за одной фичи для демонстрации одной из концепций — тоже не вариант. У учеников сложится впечатление, что «за ООП — это идти к ЯП1, функциональное — это к ЯП2, а эффективно использовать проц — это к ЯП3». Т.е. концепция демонстируется не сама со себе в таком случае, а вместе со всё новым языком. Наглядность улетучивается.


                              1. Source
                                10.11.2016 18:30

                                кстати, оператор const в других языках никто не отменял

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


                                Объём сторонних библиотек и прочей инфы — всё это списать со счетов популярных языков только из-за одной фичи — не вариант.

                                Вы просто не представляете объём сторонних библиотек и прочей инфы, по языкам, с которыми не знакомы… и их популярность тоже недооцениваете )


                                У учеников сложится впечатление, что «за ООП — это идти к ЯП1, функциональное — это к ЯП2, а эффективно использовать проц — это к ЯП3»

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


                                1. pingping
                                  10.11.2016 19:30

                                  по-моему Вы не очень понимаете, что такое иммутабельность данных

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

                                  Вы просто не представляете объём сторонних библиотек и прочей инфы, по языкам, с которыми не знакомы…

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

                                  Ничего страшного.

                                  Наложить кучу… кхм… в голову людям, которые через 15-20 лет возьмут бразды правления страной в руки — сущие пустяки!

                                  По факту всё так и есть,

                                  "- Так Вам нужна программа с применением ООП?
                                  — Для тупых повторяю: рация сломалась на танке"

                                  Но по факту мы не наблюдаем монополии какого-либо языка на всякую концепцию. Формирование обратного представления у детей — это гадить им в жизнь, своим детям и внукам, ну и себе в старости.

                                  но это в реальности достигается путём уступок и жёстких компромиссов.

                                  «Эх… на чём же писать-то?? ООП на сях или ООП на питоне??.. железа много — можно на питоне»
                                  Примеры?
                                  Где, кроме суровых железных ограничений, придётся пойти на «жёсткий компромисс» и выбрать моно-язык какой, без того же ООП, а оно в проекте нужно?
                                  Почти все популярные языки нонче — мульти. Т.е. языка — это уже ф-ция от желания заказчика и наличия специалистов и даже немного :) от специфики задачи.

                                  А как Вы предлагаете выбирать язык, наиболее подходящий под задачу

                                  Если существующий проект — то боль и вопрос языка закрыт (разве что речь о «всё по-новой»).
                                  Если проект новый/перепись — то выбор начинается.
                                  Окинуть взором веб на предмет возможных вариантов/новинок/тенденций в ЯП (кстати, отдельными языками можно и нужно считать даже сторонние библиотеки, ибо это отдельный набор терминов и функционал).
                                  Если долгосрочный — то важны затраты на поддержку: внесение изменений должно быть простым (быстрым и дешёвым) — нечто достаточно популярное и/ли с растущей популярностью (чтоб спецы на нём были по безоблачным ценам).
                                  На этапе реализации основные затраты — это время людей. И они его не должны тратить на специфику специфичного чего-то без надобности. Т.е. приоритет тому, что уже знают (а знают, вероятнее всего — нечто популярное; а популярность в ЯП не падает с неба), либо то, что есть смысл изучить ввиду растущей популяpрности (проект то не последний).
                                  Ну а дальше всё просто:
                                  сервак/PC — где железа поболе — скриптовый ЯП высокого уровня (JS — фактически, уже без вариантов),
                                  если железа мало/критичная скорость — то компилируемый язык: Go или С (ну максимум с асм вставками).
                                  Если веб — ну совсем понятно (флеш или жаба-аплеты — уже всё).
                                  Мобила — как и на десктопе (с поправкой, что низким уровнем может быть и андроидная жаба).
                                  Ну а если какие ардуины многоногие — то там выбор не так широк.
                                  Если ж нормальную ОСь там можно пустить («малинки» и ко) и по скорости/мозгам некритично — то можно сохранить время людей, взяв привычный ЯП высокого уровня (нода крутится на таком без вопросов).

                                  Думаю, ни одному «гвоздю» мало не покажется.


                                  1. Source
                                    10.11.2016 20:11

                                    Как в вашу императивную картину мира вписываются такие факты:
                                    Twitter выбрал Scala, WhatsApp — Erlang, Facebook — написал свой язык.
                                    Сложность проектов и требования к ним растут, текущий мейнстрим — это временное явление, впрочем как всегда.
                                    По-моему Вы боитесь, что люди после школы будут знать больше полезного, чем большинство текущих программистов. Поэтому хотите их учить тому, что наверняка уж устареет и как можно быстрее :-)


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

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


                                    1. pingping
                                      10.11.2016 21:12

                                      Ну, сравнили времена… Когда ж эти решения были приняты!

                                      Twitter выбрал Scala

                                      Имеющаяся кодовая база и куча спецов на жаве, но захотелось чего-то освежить? (когда — не знаю)
                                      Вполне.

                                      WhatsApp — Erlang

                                      Пишут, что по 2 ляма коннектов ерланг-софтина держит на сервер. Но это новость за 2012. А перед этим они хвастались результатами за 2011 год в 1лям коннектов. А когда решение принималось — вообще вопрос.
                                      Нода же только в 2009 появилась на свет… Тогда и речи быть не могло о продакшне на ней.
                                      Но 7 лет то уже позади…

                                      (кстати! на ерланге ещё RabbitMQ писан — хорошая софтина)

                                      Facebook — написал свой язык.

                                      Их Hack язык — это пропатченый пых (я тоже пых патчил в своё время) под статическую типизацию. Т.е. снова же: груз имеющегося кода + системные проблемы с ним = конечно легче подпатчить язык, а не менять всю кодовую базу.

                                      Ещё есть примеры? — было интересно покопать.

                                      текущий мейнстрим — это временное явление, впрочем как всегда.

                                      Текущий мейнстрим — в асинхронности (уже писал). И у кого его нет — тот счас уходит со сцены. Медленно, но уходит.

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

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

                                      на компромиссы приходится идти дизайнерам языка,

                                      да уж, внезапно… таки не понял этого.

                                      В итоге ни одна не реализована толком

                                      Ну и по доброй традиции — ноль примеров. Дескать, всё что есть из популярного — всё чисто недопиленные позёрские поделия…


                                      1. Source
                                        10.11.2016 21:54

                                        Имеющаяся кодовая база и куча спецов на жаве

                                        Мимо, имелась кодовая база и куча спецов на Ruby.


                                        Их Hack язык — это пропатченый пых

                                        А помните как переводили кодовую базу? https://github.com/facebookarchive/lex-pass/tree/master


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

                                        А на каком языке сейчас нельзя? Упомянутые Вами малинки потянут что угодно из компилируемых ЯП, они даже интерпретируемые типа JavaScript тянут. Вообще идея для всего использовать один язык — это как раз та история про плотника с молотком. Ну можно на JS писать под десктоп (Electron), но это ж тихий ужас… Приложение весит 100+ Mb, и память жрёт не хуже, чем браузер. Не у всех на десктопе по 16 Gb оперативы… тот же C# на десктопе JS уделывает как тузик грелку.
                                        Поэтому чем тут мериться? Тем что "для галочки" везде можно использовать?


                                        Дескать, всё что есть из популярного — всё чисто недопиленные позёрские поделия…

                                        Причём тут позёрство? К примеру, чисто технически невозможно сделать одновременно функциональноориентированный и объектноориентированный язык. Хотя бы потому что в для первого — необходимо передавать состояние функциям, а для второго слать сообщения "состоянию"(объектам).
                                        Можно частично использовать ООП и ФП совместно, но нельзя ориентировать один язык сразу на 2 парадигмы. Всё равно одна будет ведущей, а другие — частично поддерживаемы.


                                        1. pingping
                                          10.11.2016 23:45

                                          как переводили кодовую базу? https://github.com/facebookarchive/lex-pass/tree/master

                                          Полистал сей хаскеловский код… не увидел ничего прям суперского по поводу парсинга. Как-то показалось, что когда-то видел что-то получше для парсинга. Просто какой-то фанат хаскела смог продавить проект.

                                          (ЗЫ прочёл у них в каментах, что хаскел таки имеет какие-то чудные средства для парсинга)

                                          но нельзя ориентировать один язык сразу на 2 парадигмы

                                          Звучит как «нельзя сделать автомобиль, который мог бы поворачивать в разные стороны: ведь если Вы повернёте руль влево — то он не может быть повёрнут в то же время направо»…


                                          1. Source
                                            11.11.2016 01:28

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

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


                                            1. pingping
                                              11.11.2016 09:19

                                              Кстати, насчёт «разные концепции должны быть только в разных языках».
                                              Если не фен-шуй, когда разноконцептуальный код размещён в рамках одного файла исходника, то чуть абстрагировавшись и поднявшись в иерархии мироздания на уровень всего компа — тоже можно заявить:
                                              «на одном компе не фен-шуй наличие разноконцептуальных языков программирования, нужны отдельные компы для разных языков» :) «На этом мы программим функционально, а на этом вот — ООПим.»

                                              Так что, так уж много ль разницы,
                                              * если несколько концепций находятся внутри одного бинаря интерпретатора языка (и могут парсить разные концепции внутри одного файла-исходника)
                                              * или же если несколько концепций находятся внутри одного винта и могут парсить разные концепции внутри одной ФС этого же винта? :)


                                              1. Source
                                                11.11.2016 12:01

                                                Фен-шуй тут ни причём, смотрите простой пример:
                                                Если ЯП позволяет написать функцию, модифицирующую свой аргумент, то это процедурный ЯП.
                                                Если эту функцию необходимо убрать в объект, и модифицировать она будет состояние объекта, то это объектный ЯП.
                                                Если эту функцию в принципе нельзя написать, т.к. данные неизменяемы, то это функциональный ЯП.
                                                Т.к. невозможно выполнить все 3 "если" одновременно, язык должен определиться со своей главной парадигмой.


                                                А теперь код:


                                                function modify(a){ a[0] = 0; }
                                                x = [1, 2, 3];
                                                modify(x);
                                                x == [0, 2, 3]; // => true

                                                def modify(a):
                                                    a[0] = 0
                                                
                                                x = [1, 2, 3]
                                                modify(x)
                                                x == [0, 2, 3] # => true

                                                Как видно, и JavaScript и Python являются процедурными языками. Да с поддержкой и эмуляцией некоторых фич ООП и ФП, но без ориентации на них. То что разные концепции частично сочетаются в одном языке — это хорошо и удобно для практики, но ужасно для обучения. Сейчас мало кто из программистов понимает, что такое ПП, ООП, ФП… потому что не понимают концепции, а используют какие-то неадекватные критерии, типа "есть классы — значит поддерживает ООП", "есть функции высшего порядка — значит поддерживает ФП". А маркетологи языков на этих мифах успешно ездят.


                                                1. pingping
                                                  11.11.2016 15:16

                                                  Т.к. невозможно выполнить все 3 «если» одновременно, язык должен определиться со своей главной парадигмой.

                                                  Зачем???

                                                  И почему невозможно? Берёшь, не трогаешь переменные — получается ФП. Трогаешь — ПП. Какие проблемы? Или шашечки так уже нужны?


                                                  1. Source
                                                    11.11.2016 17:03

                                                    И почему невозможно? Берёшь, не трогаешь переменные — получается ФП. Трогаешь — ПП. Какие проблемы?
                                                    Экосистема, начиная со стандартной библиотеки.
                                                    И даже если полностью отказаться от стороннего кода, то всё равно будут проблемы с самим языком, т.к. на его уровне нет поддержки важных фич конкретной парадигмы… Попробуйте какую-нибудь парадигму помимо ПП с классами, чтобы понять масштаб проблемы в мейнстрим-языках. К примеру, Smalltalk (ООП) или Haskell (ФП).


                                                1. pingping
                                                  12.11.2016 00:13

                                                  А теперь код:

                                                  хорошо и удобно для практики, но ужасно для обучения.

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

                                                  Както выходит, что учёба — это учёба, а практика — это практика. И, дескать, их ничто не объединяет. Я такое встречал в универе, где преподы уже давно сами ничего практичеки не делали, а потому и не умели толком. Зато умели учить… чему-то…
                                                  Как там в народе: «кто не умеет работать — идёт учить. А кто не умеет учить — идёт учить тому, как учить»
                                                  Но это именно тот тупик, из которого нам предстоит выбираться…


                                                  1. Source
                                                    12.11.2016 01:06

                                                    Ну а если для практики порядок — то учёба это всего-лишь подготовка к этому удобству.

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


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

                                                    Легко по моему плану будет вряд ли, зато будет чётко и понятно что к чему.


                                                    1. pingping
                                                      12.11.2016 13:00

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

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

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

                                                      Во такую «сиюминутную моду» я хочу в образование:

                                                      мой камент повыше

                                                      В итоге спрос на программистов растёт, а качество обучения постоянно падает. Вот в чём настоящий тупик!

                                                      Можете полюбопытствовать как дела обстоят в других направлениях науки. К примеру, в 15-ом году наша команда школьников на олимпиаде по математике в Тайланде «впервые за всё время участия в подобных соревнованиях не получила ни одной золотой медали» (http://d-russia.ru/mezhdunarodnaya-olimpiada-po-matematike-rossiya-vpervye-bez-zolota.html)
                                                      Здравомыслие, говорите?

                                                      (справедливости ради: в этом году у наших было уже 4 золота)

                                                      Т.е тупик есть — но в чём его первопрочина, корень?

                                                      ато будет чётко и понятно что к чему.

                                                      Ну дай то Бог, чтоб в гонке за академической чистотой не прозевать недовольство заказчика.


                                                      1. Source
                                                        12.11.2016 13:43

                                                        Совершенно верно. И что, это неадекватное желание? Или вложить в проект побольше, писать академической чистоты код 5 лет,

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


                                                        мой камент повыше

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


                                                        Т.е тупик есть — но в чём его первопрочина, корень?

                                                        Имхо, как раз в упрощении программы, насколько мне известно, сейчас в некоторых школах обучение в старших классах свелось к подготовке к ЕГЭ o_O


                                                        1. pingping
                                                          12.11.2016 14:32

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

                                                          Но станок и стоит куда дороже напильника…
                                                          Это вечная диллема «автоматизация — затраты на неё»

                                                          именно поэтому этим должно образование заниматься.

                                                          Может и не вполне очевидно, но в условиях дикого капитализма (счас практически на всей планете) государство во многом самоустраняется от рулевания макроэкономикой как единым целым, вынуждая отрасли заниматься вопросом выживания самостоятельно. И образование — не исключение.
                                                          Если образовательное заведение не умеет заработать — его купит (безотносительно формального права собственности) кому надо.
                                                          Отсюда и официально платная форма обучения.
                                                          И вопрос встаёт ровно тот же: если начать учить заказчика (студент и его родители — это заказчики) чему-то безмерно высокому, но не [очень] востребованному — то можно и без работы остаться… А чего хочет заказчик? — да ровно того же: суметь заработать на полученном знании и/или корочке. Т.е. тоже не склонен платить за лишние годы протирания штанов, если за меньшее время уже можно успешно выйти на рынок труда.
                                                          Вот так всё замыкается за рынок.

                                                          Ведь государство то самоустранилось от управления… Кому-то это нужно…

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

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

                                                          Ну я не соглашусь, что всю и что примитивом, но:
                                                          Пока в народе нет понимания и навыков об управлении (той самой методологии познания) — всё будет идти ровно как описал выше: всё во имя денек. Это счас — массовая идеология. Звучит: «выгодно продай». Кто что продаёт: кто китайские товары, кто своё время, кто какие-то понты, кто какието секреты, кто ближних своих… главное, хотят повыгоднее.
                                                          Ну и вот встаёт вопрос: и как эту махину перевести в другой режим? — Нужно как-то привлекать внимание этих людей. И на уме у них понятно что в первую очередь.
                                                          Т.е. нужно привлекать чем-то, что реально поможет им на пути к их целям (деньгам), и уже параллельно с этим давать разумное-доброе-вечное (всем что-либо человечное не чуждо).
                                                          А тем более, если это разумное-доброе-вечное — это теория управления чем угодно, в любой отрасли. То если это знание будет двигаться в массы вместе с актуальными технологиями заработка (ну а зачем ещё молодёжь идёт в программинг? красоту кода созерцать?) и навыками самообразования — то я думаю, что это весьма и весьма.

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

                                                          Какое же «только», если в первую очередь речь идёт о теории познания?
                                                          программинг со всеми компами и языками программирования — это уже частности. Кто умеет познавать новое — научится чему пожелает даже сам.

                                                          как раз в упрощении программы

                                                          Да… и, увы, сей процесс начался на 2 и не 3 десятилетия назад. В средине 20-го века в СССР в программе была и логика, и более вменяемая математика и т.д. В космос наш спутник вышел первым (после такой то разрушительной войны!) — неспроста…

                                                          сейчас в некоторых школах обучение в старших классах свелось к подготовке к ЕГЭ

                                                          Всего лишь в примерно 99% школ…
                                                          Да, болванский этот процесс — это очередная стадия разрушения нашего общества вообще. Благо, новая министр образования завела рЭчь, что с этим пора подвязывать. Впрочем, возврат к программам СССР — это тоже уже не выход. Считать, что мир остался таким, как был тогда — кхм… неразумно.
                                                          Да и теории познания тогда такой стройной не было.
                                                          Счас же, та страна, которая первой введёт в массовое обязательное образование вышеобозначенную достаточно общую теорию управления — станет безальтернативным мировым лидером. Но это отодвинет «элиту» этой страны от «корыта»… а она этого не хочет… потому, ждать таких перемен «сверху» — не приходится.


                                                          1. Source
                                                            12.11.2016 15:17

                                                            нужно привлекать чем-то, что реально поможет им на пути к их целям (деньгам)

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


                                                            Да и теории познания тогда такой стройной не было.

                                                            Это Вы загнули… Гносеология то чем изменилась за последние пару десятилетий?


                                                            1. pingping
                                                              12.11.2016 20:58

                                                              Я верю в человечество

                                                              Ну, без веры в человечество не было бы и смысла думать о каких-то переменах!

                                                              и хочется думать что повёрнутые на деньгах люди — это маргинальное меньшинство

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

                                                              Потому что деньги — это побочный эффект деятельности, а не её цель.

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

                                                              Гносеология то чем изменилась за последние пару десятилетий?

                                                              Может и ничем. Но от этого не стала адекватнее насущным задачам людей.

                                                              Каков практически полезный главный вопрос философии? «Что первичнее: материя или сознание?»? (или курица с яйцом? :)
                                                              В педивикии читаю в статье о гносеологии: «Основной вопрос — познаваем ли мир в принципе?»

                                                              Ну, допустим, материя первична — и что? Или сознание — тогда что? Какова от этого польза?
                                                              Ну или вопрос о познаваемости мира. Ну если непознаваем? — отлично, и что? сесть и лапки сложить? А если познаваем — то кэп подсказывает, что нужно его исследовать. Офигенный совет! Спасибо, кэп!

                                                              Удивительно ли, что такая философия осталась в высоких кабинетах и не востребована в массах? Есть ли смысл после этого говорить о её стройности? — я уже не вижу смысла.

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

                                                              А вот о ней я речь теперь и веду…


                                                              1. Source
                                                                12.11.2016 23:46

                                                                Но почему-то, именно прибыль — главная цель любой коммерческой деятельности

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


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

                                                                Это да, поэтому астрология и хиромантия гораздо популярнее любой теории познания..


      1. Danov
        04.11.2016 01:21
        +1

        Вы серьезно в школе учились писать поиски, сортировки…?
        Представьте себе, Да.
        Обычная школа в захолустье. Плотность населения 2чел/км2. 1989г. Без компьютеров. Доска и АЯ. Алгоритмы на деревьях не помню, но помню дерево арифметического выражения на доске.


        1. expeerd
          04.11.2016 16:05

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

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

          Или чего уж там далеко ходить, в параллельной группе учительница, как она дает html… Это фейспалмом еще стену за собой пробить! Шел 2016 год, а она все оборачивала div с align=«center» в тег

          <center> 
          

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


          1. Lsh
            05.11.2016 02:20

            Таких убивать надо на месте. Самым жестоким образом! Чтобы детям мозги не загаживали.


            1. pingping
              05.11.2016 02:28

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


      1. geher
        04.11.2016 13:04

        Язык на самом деле совершенно не важен. Нас учили вообще программировать на абстрактном языке, не реализованном на компьютерах.
        Важно, чтобы не просто: дали набор операторов и крутись как хочешь (как оно часто и бывает), а чтобы была общая теория: как оно работает, как правильно строить программу, какие есть подходы к обработке данных, какие есть парадигмы программирования и так далее. А потом уже теорию применять на практике на компьютере. Тогда новому языку обучиться, новой парадигме программирования, освоить новую предметную область в объеме, нужном для понимания при написании программы — никаких проблем.


    1. geher
      03.11.2016 19:40

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


    1. skyblade
      03.11.2016 22:26
      +1

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


    1. FForth
      04.11.2016 20:31
      +1

      Оставлю здесь ссылку (может окажется полезной при рассмотрении обсуждаемого вопроса)
      Кодирование для дошкольного возраста: 'Черепашка Лого ' в Forth
      By Assad Ebrahim, on October 30th, 2016
      http://mathscitech.org/articles/turtle-logo-forth


      1. FForth
        04.11.2016 21:39
        +1

        И добавлю ещё одну ссылку
        https://github.com/phreda4/reda4


  1. bak
    03.11.2016 19:31
    +3

    ЗадачаComputer Science — не сделать из вас программиста, а научить думать.

    Фраза «научить думать» — это антипаттерн текстов про образование. Примеры:
    «Цель высшего образования — научить думать», «Цель школы — научить думать», «Цель хорошего педагога — научить думать». Все пытаются «учить думать», вместо того того чтобы учить предмету / специальности.
    По сабжу — учить computer sciense вместо word-а — это правильный подход.


    1. Danov
      04.11.2016 01:32
      +5

      Это поверхностный взгляд. Учить мышлению нужно обязательно. Но никто толком не знает как это делать. Потому как и мышлений бывает много разных. Бывает магическое, бывает рациональное, алгоритмическое,… и т.п. Одни Гарри Поттера читали от Роулинг, другие от Юдковского. Отпечаток в мышлении будет разный. Поэтому, нужно учить правильно думать.


      1. bak
        04.11.2016 12:52

        Ок, тогда расскажите пожалуйста, что значит «учить мышлению», как понять, научился ли я «мышлению» или нет? И что мне делать если я записался на курсы по java, меня там научили «мышлению» и не на учиили java?


        1. geher
          04.11.2016 13:09
          +1

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


        1. Danov
          04.11.2016 19:28

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

          Причем, в школе (и даже до школы) надо бы дать некое мета мышление, базовые «наборы мышлем», «накатанные рельсы», на которые уже позже могут мапиться алгебра, геометрия, физика, Java, Haskell, и т.п.

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


          1. pingping
            04.11.2016 19:42
            +2

            И что же это должны быть за рельсы?

            Поток то новой инфы никого не обходит стороной, включая учителей (почему так — см. «Закон Времени» — гуглимо). А потому найти учтеля по какому-то новому и актуальному знания — так сложно: ведь кто-то должен найти это знание, освоить его самостоятельно, и заявить остальным себя в роли учителя. Но пока он учится — другим то что делать? Им то нужно это новое знание. Они тоже будут пытаться его изучать.

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


            1. Danov
              04.11.2016 19:58

              Умение учиться очень абстрактный навык. Примерно такой же как и умение дышать. Все умеют учиться, как и все умеют дышать. Кто-то медлоенно, а кто-то быстро. Но проблемы начинаются, когда нужно уметь правильно дышать (при беге, плавании, ..).

              Как подметила Черниговская очевидную банальность: мозг нужен нам для обучения. Любопытство у всех с рождения сильное и с возрастом угасает. Если в моем дестве были минуты и даже часы, когда не знаешь чем себя занять (не было у меня тогда под рукой много хорошей фантастики), когда умираешь от скуки (тв всего два канала), то сегодня такой проблемы у детей нет. Полно жвачки для мозгов. Нажал на кнопку и ушел в транс. В итоге, ресурсы любопытства быстро иссякают и ребенка уже все достает. Проблем целый букет. Так что пока не скажу, какие рельсы самые прямые.


              1. pingping
                04.11.2016 20:16

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

                Просто так, без причин?
                Насилие в образовании, причём десятилетнее — отбивает напрочь желание даже самостоятельно что-то изучать новое.

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


        1. SADKO
          05.11.2016 18:17

          Учить мышлению, легко! Во первых, по умолчанию у человеков есть определённые поведенческие стратегии, и чрезвычайно полезно вытащить их на уровень сознания, дабы более адекватно\конструктивно воспринимать свои чувства и поведение других людей…
          Далее есть стратегии «рационального мышления», и ТРИЗ здесь лишь наиболее известный.
          На самом деле, если внимательно присмотреться к людям эффективным в своих областях, можно выявить конкретные стратегии поведения, а потом, например в игровой форме перенести их на детей\взрослых.

          Казалось бы это всё психотехнологии, причём здесь computer sciense, но ИМХО именно паттерны computer sciense эту технологию делают. Мне всё чаще попадаются люди, шикарно наводящие трансовые состояния, освоившие самогипноз, но не способных сделать не фига полезного, кроме сценических фокусов, и это как раз таки следствие ограниченного набора паттернов мышления!

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


  1. Wayfarer15
    03.11.2016 21:07
    +2

    "CS unplugged — упражнений на развитие навыков по предмету" — а можно с этого места подробнее, это какие-то игры или что? Вероятно, их можно где-то купить/заказать.


    1. AlyonaTkachenko
      04.11.2016 08:38
      +1

      Из тех ресурсов, которые есть в свободном доступе и неплохи:
      1) https://code.org/curriculum/unplugged
      2) http://csunplugged.org/books/ (тут книжка в pdf)
      3) https://www.kidscodecs.com/cs-unplugged-projects/


      1. Wayfarer15
        04.11.2016 20:48

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


        1. Danov
          04.11.2016 21:04

          Пиктомир, Lightbot, ColoBot


          1. Wayfarer15
            04.11.2016 21:37

            Lightbot прикольный. Я говорил примерно про это же, но там роботы «настоящие», их потрогать можно.


            1. AlyonaTkachenko
              05.11.2016 08:13

              это тогда скорее всего про Tynker. У них целая экосистема уже)


              1. Wayfarer15
                05.11.2016 20:28

                Вот, нашёл, не совсем то, но очень похожее — youtu.be/HepUieGGADM — «железная» часть и софт присутствуют, всё как доктор прописал. Ну и ещё какой-то — makewonder.com/apps/blockly

                Вот только сдаётся мне, что пару раз погоняв вперёд-назад, вправо-влево, ребёнку это станет совсем не интересно, потому как нет цели или (непереводимое слово) challenge. Чего-то тут не хватает. :))


                1. Source
                  06.11.2016 00:22

                  Для детей постарше есть такого плана: https://www.youtube.com/watch?v=XnDvebuc0tw


  1. skyblade
    03.11.2016 22:22
    +2

    > И если есть заинтересованные лица — пишите. Могу поделиться всеми теми материалами и линками по этой теме, которые есть.

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


    1. AlyonaTkachenko
      04.11.2016 08:39

      Спасибо большое за вопрос. Честно говоря — не думала, что будет столько откликов и дискуссий.
      Подскажите, что именно вам интересно? Материалов на самом деле очень много.


      1. Danov
        04.11.2016 10:37
        +1

        Меня заинтересовала затронутая вами тема:

        … обучение computational thinking — это прежде всего обучение принципам мышления и только во вторую очередь — за компьютером. Больше всего наработок в этом направлении, как ни странно, у Австралии с Новой Зеландией — именно они занимались разработкой такого направления, как CS unplugged — упражнений на развитие навыков по предмету, которые выполняются без компьютера.


        1. pingping
          04.11.2016 12:47

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

          У нас в России есть разработанная теория, однообразно описывающая в принципе любой процесс управления (от езды ребёнка на 3-колёсном велосипеде до реализации международного проекта). Обучение этой теории детей поможет им с лёгкостью освоить вообще любое частное знание (математику, физику, информатику с компами и программированием, производство, госуправление) и найти общий язык между любыми узкими отраслями деятельности людей. Просто потому, что все везде и так занимаются управлением, просто оздали узкозаточенный терминологический аппарат для каждой отрасли. Обобщив процессы, происходящие в частных формах управления — мы и получим дотаточно общую теорию управления (ДОТУ, гуглимо).


        1. AlyonaTkachenko
          04.11.2016 12:50

          По анплаггд советовала бы для начала:
          1) https://code.org/curriculum/unplugged
          2) http://csunplugged.org/books/ (тут книжка в pdf)
          3) https://www.kidscodecs.com/cs-unplugged-projects/

          По международному опыту — считаю, что UK — один из самых классных примеров для копирования. Можно посмотреть много всего в их CAS Community.
          + http://www.computingatschool.org.uk/data/uploads/CASPrimaryComputing.pdf
          + https://www.computingatschool.org.uk/data/uploads/ComputingCurric.pdf
          + http://www.computingatschool.org.uk/data/uploads/internationalcomparisons-v5.pdf
          + https://www.acm.org/education/curric_vols/k12final1022.pdf
          + https://www.euractiv.com/section/digital/infographic/infographic-coding-at-school-how-do-eu-countries-compare/


  1. Source
    03.11.2016 22:43
    +1

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

    Физика начинается с 6-го класса, а химия — с 7-го, или сейчас что-то поменялось?


    1. Danov
      04.11.2016 01:35
      +1

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


      1. Source
        04.11.2016 21:56

        Ну, так можно далеко зайти… Если мама объясняет ребёнку, что не надо хвататься за включенную лампу накаливания, потому что когда её включают — она горячая, можно ли это считать вводной формулировкой закона Джоуля-Ленца? :-)


        1. Danov
          04.11.2016 22:40

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


          1. Source
            05.11.2016 01:14

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


            1. Danov
              05.11.2016 06:03

              STEM — существует и развивается. IT расширяет границы возможного. То что вчера было невозможным сегодня становится реальным.


              1. Source
                06.11.2016 00:24

                Ну, STEM — это даже не половина школьных предметов )))


                1. Danov
                  06.11.2016 00:51

                  Не надо так сразу отвергать чужой опыт. Изучать надо. En.Wiki дает большой список вариантов:

                  STM (scientific, technical, and mathematics;[4] or science, technology, and medicine; or scientific, technical, and medical)
                  eSTEM (environmental STEM) [5][6]
                  iSTEM (Invigorating Science, Technology, Engineering and Mathematics); adds Invigorating: Recognises that STEM is not new. This program identifies new ways to teach STEM related fields.
                  METALS (STEAM + Logic), introduced by Su Su at Teachers College, Columbia University.[7]
                  MINT (mathematics, information sciences, natural sciences, and technology); a less common term with a similar meaning. MINT is used more often in Germany.[8]
                  STREM (Science, Technology, Robotics, Engineering and Mathematics); adds robotics as a field.
                  STREM (Science, Technology, Robotics, Engineering and Multimedia); adds Media as a field.
                  STREAM (science, technology, Robotics, engineering, art, and mathematics); adds the arts and robotics field.
                  STEAM (science, technology, engineering and applied mathematics); more focus on applied mathematics[9]
                  GEMS (Girls in Engineering, Math, and Science); used for programs to encourage females into these science fields.[10]
                  STEMM (science, technology, engineering, mathematics, and medicine)
                  AMSEE (Applied math, science, engineering, and entrepreneurship)

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


                  1. Source
                    06.11.2016 01:22

                    Да я в общих чертах представляю что такое STEM. Просто Вы забыли, что в школе есть ещё и куча гуманитарных предметов. Или предлагаете литературу тоже в концептах математики разбирать? А вместо изучения правил русского языка заняться частотным анализом?
                    Физика с математикой и так всегда связаны были, в том числе и в школьной программе. Химия тоже с ними переплеталась. Ну добавили биологию и информатику к ним ещё. Это всего 5-6 школьных предметов. А всего предметов, емнип, раза в 4 больше.
                    С остальным я, в принципе, и не спорю… Хотя всё это разнообразие аббревиатур наводит на мысли о горе-маркетологах. Особенно доставляет GEMS с дискриминацией по половому признаку… как они такое название в США зарегистрировать то смогли )))


                    1. Danov
                      06.11.2016 02:13

                      С русским языком еще более менее понятно, некий вариант компьютерной лингвистики можно взять за основу. Историю, обществознание нужно с биологией переплетать, которая есть описание систем, обучение моделированию конструкций, в том числе 4D (в развитии).

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

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


                      1. Source
                        06.11.2016 16:17

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


  1. filkt
    04.11.2016 08:40

    >Computer Science — это не урок по использованию Microsoft Word/Excel/Paint.
    Я учился в школе с лингвистическим уклоном, и информатика у нас была 1 раз в неделю (если не ошибаюсь, это было более 10 лет назад), на которой нас ни разу не учили офисным программам, а мы проходили алгоритмы, изучали как вообще функционирует компьютер и все такое.
    Недавно помогал племяннице, с информатикой, и там тоже алгоритмы, объекты, абстракции. Где вы взяли что детей учат пользоваться вордом? Да учебники сейчас так себе, и подача материала хромает (Так племянницу заставили учить расширения файлов не объясняя почему так и переводить байты в мегабайты, не объясняя что такое возведение в степень)


    1. AlyonaTkachenko
      04.11.2016 08:42

      Возможно вам повезло со школой. Ворд/эксель/паинт — это пока все еще программа очень многих школ.
      В Москве есть около 3-4 групп разных учебников по информатике и, соответственно, учебных программ. Есть и такие, где с 3го дается алгоритмика и все отлично. Но так пока не везде.


      1. kvima
        10.11.2016 09:54
        +1

        Word нужен, чтобы грамотно оформить курсовую, диплом (многостраничные документы с иллюстрациями, таблицами и т.п.) — это не просто. Как это делается, лучше показать в школе.
        Excel — замечательная среда для моделирования почти чего угодно.
        В школе сейчас популярна проектная методика. Как представить результаты работы? В PP! А это значит, отобрать главное, структурировать, правила дизайна не нарушить и т.п.
        У каждого из этих приложений множество очень полезных возможностей, о которых большинство не догадывается. Или все перечисленные умения от рождения даны? А ведь они пригодятся практически каждому.
        Хотя, конечно, все можно сделать «на коленке»: буквы, цифры, пробел, enter — на любом языке код можно написать. А что еще человеку нужно?


  1. Fenomen51
    04.11.2016 08:42

    Единственно, плохо понятно чем отличается информатика для не программистов, бывает ли физика, для не физиков? Получается, логарифмические дроби, которыми мало кто после школы пользовался — нужны и не математикам, хорошо очень развивают, а если многим нужно компьютером пользоваться, а люди продолжают поддержку вызывать, чтобы включить компьютер в розетку, ибо не работает — эт норм и не программистам не нужно такого знания. Классно, что ученики сами разделяют сие мнение, очень рады не учиться «лишнему», ведь для исполнения чужих поручений, совсем не требуется развитие собственного интеллекта, нужно лишь уметь читать и осознавать, что тебя точно накажут, если исполнишь прочитанное указание неправильно.


  1. LonelyDeveloper97
    04.11.2016 16:21

    Да ладно, зачем лезть в программирование и CS.

    Для начала — научите людей использовать поисковики. In my honest opinion, это один из наиболее критичных скиллов на данном этапе развития общества, но, при этом, что в вузе, что в школе, что на работе, я постоянно встречаю людей, которые просто не умеют работать с тем объемом информации, который находится у них под рукой и не могут быстро ее найти и применить.
    Полугодичный курс в университете в первом семестре, с названием «Гуглим правильно» и аналогичный предмет для школьников был бы очень полезен.


  1. Ermak
    04.11.2016 17:40
    +2

    ЗадачаComputer Science — не сделать из вас программиста, а научить думать.
    я думаю, что научить думать это и есть самая главная задача образования, любого образования.


  1. andertalez
    05.11.2016 08:13

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


    1. pingping
      05.11.2016 11:16

      А всегда самые большие проблемы решаются силами энтузиастов.
      Так что, не стоит впадать в уныние :)


  1. Proletary
    05.11.2016 08:13
    +1

    нас в 10 классе учат переводчиком пользоваться…


  1. perfect_genius
    05.11.2016 15:36
    +1

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


    1. geher
      05.11.2016 15:55

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


      1. FForth
        05.11.2016 22:39

        Есть вполне понимаемый для программирования ПЛК контроллер ES-ForthLogic™ в текстовом языке программирования, хотя и не МЭК стандарта.
        http://www.es.ua/ru/kataloh/prohramne-zabezpechennia-dlia-kontroleriv-es-forthlogic/forthlogic


  1. andyudol
    08.11.2016 20:17

    … перечитали большое количество талмудов.

    А не можете ли вы перечислить три наиболее полезных из них с вашей точки зрения?