Pull to refresh

Comments 37

Спасибо огромное за то, что собрали столько полезной информации в одном посте.
UFO just landed and posted this here
Основы программирования и CS для самых маленьких. Нахрен универ, нахрен обучение, почитал аналогий про апельсины и рецепты и пошел кодить. Разработка это ведь, *****, так просто, прямо как продукты в магазине покупать.
Хм, возможно я сейчас ведусь на какой-то толстый троллинг, но мне кажется, что вы немного неправильно поняли смысл статьи. Автор довольно четко обозначил свою позицию еще в самом начале: аналогии дырявы и нужны только для того, чтобы дать общее представление. Если вы хотите более глубокого понимания — учитесь! Автор написал эту статью, как я понимаю, для того, чтобы заинтересовать, прежде всего, дать первый толчок в правильном направлении
Комментатор высказал то, что я думаю более понятно — неясно на кого расчитан материал, на гуманитариев? Технарей такие неточные аналогии сбивают с толку.

Эти аналогии по факту вредны, так как дают неправильное представление, и вообщем-то в большинстве случаев ошибочны. Потому что реляционные базы данных — это теория множеств, а не апельсины в магазине.
На не технических специалистов прежде всего. А так же на тех, кто ещё не определился, с целью рассказать им что-то о мире программирования и информатики. Если перейти по ссылкам на цитаты из оригинальной статьи (которые я для того и оставил, чтобы по ним переходить), то можно увидеть, как называются вопросы, цитаты из ответов на которые приводит автор:
SQL and NoSQL Analogy for the Non-Technical
How to explain a layperson why a developer should not be interrupted while neck-deep in coding
How do you explain Machine Learning and Data Mining to non Computer Science people? (ненавижу этот quora, если честно)
How to explain OOP concepts to a non technical person?
NoSQL базы данных хранят информацию, как вы бы хранили в книге рецептов. Когда вам нужно узнать, как приготовить торт, вы открываете книгу рецептов, и вся информация о том, как приготовить торт (ингредиенты, подготовка, замеска теста, запекание и всё в таком духе) находится на одной странице.
Это обычно называется aggregate-oriented database, NoSQL более широкий класс, включающий, например, графовые базы.
Дружище, разработка — это просто, когда у тебя есть:
— лет хотя бы 10 опыта разработки, причем и для себя, и для кого-то (за деньги)
— хотя бы пара разных компаний, лучше 5, чтоб взгляд был разнообразный
— опыт наступания на грабли всех возможных конфигураций
— IQ больше возраста твоей бабушки
— самое главное — любознательность.

И вот тогда ты готов стать junior разработчиком, а не кнопконажимателем.
Хорошая история. Как все это связано со статьей?
— Что такое объектно-ориентированное программирование?
— Объекты – это существительные, методы – глаголы.
Вот после таких чудо-объяснений и появляются армии горе-программистов. Я искренее надеюсь, что людей которые изучают программирование и computer science по подобным статьям будет мало или не будет вовсе, но что-то мне подсказывает, что я зря надеюсь. :(
А как вам аналогия на эту же тему от Стива Джобса? Которая вот сразу после той, что вы процитировали?
А что, если это сказал Стив Джобс — то сразу гениально?
По мне — так очень многословно, пока читаешь — забываешь к чему он это говорит.

Если эта статья была попыткой объяснить термины гуманитариям — мне кажется, что она провалится.
Если технарям — то им такой язык не подойдет.
Стив Джобс был программистом?
А разве не был? :) Даже в «Пиратах силиконовой долины» есть момент, где они с Возняком паяют платы для своего первого компьютера в гараже.
Интересно, автор инфографики которая указана в начале поста пробовал хоть что-то серьезное сам писать?
Я бы вот не сказал что питон такой уж простой язык. Очень хочется предложить автору вникнуть, да хоть бы, в asyncio в питоне и посмотреть что он после этого скажет про простоту.
А с каких пор библиотечные модули относятся к языку? Язык — это конструкции при помощи которых составляются программы, библиотеки — это блоки составленные из этих конструкций которые могут реиспользоваться. Язык может быть простым или сложным, но это ни как не влияет на библиотеки написанные на этом языке. Например c++ в принципе не очень сложный язык, но boost — это монстр, порог вхождения в который не достижим для многих кто вполне себе пишет на плюсах используя Qt и в ус не дует.
Я конечно согласен что язык это не библиотеки. Но! Если я правильно помню начала большинства известных книг по Python, то там говорится что-то типа: python удобен тем что «в комплект входят батарейки». Прошу прощения точной цитаты не помню. Так вот сравнение boost и qt не является ничем общим с asyncio, так как в комплект c++ не входит boost.asio, или Qt sockets. Наверное тогда бы уж стоило в пример привести пример с STL, не правда ли(и то не все компиляторы в полной мере держат все что там написано)?

Я согласен что Python этот тот язык на котором стоит учиться. Даже больше того я его сам порекомендую. Просто на мой взгляд в этой табличке создается впечатление что он примитивен. А это не так. Плюс, хорошо, возможно пример с asyncio был не совсем хорош, просто наболело. Но возьмем декораторы, генераторы, сопрограммы. Насколько легко вы это объясните новичку?
Когда аналогия уже из первого пункта неверна — это как-то демотивирует читать дальше…
я сделал усилие, было интересно о чем речь и почему переводчику так понравилась статья
Ну вот открыл снова, рандомно перемотал
Попал на пункт 4, параллелизм
И там опять неверная аналогия! :)
Наверное один плюс этой статьи все же есть. В ней упоминаются действительно вещи которые желательно бы знать человеку, связанному с IT. Есть отсылки на wiki и другие материалы. Думаю человеку, имеющему пытливый ум, будет интересно почитать про те технологии которые, возможно он не изучал ранее. А выводы из любого материала мы должны делать сами, и говорить о том что так уж ужасно что кто-то прочитает статью и станет плохим специалистом, не верно. Если человек сделает выводы основываясь на одной статье, он уже плохой специалист.
По поводу статьи: это был, безусловно, огромный труд. Как со стороны автора, так и переводчика. Но, блин, зачем? Автор пытался написать википедию? Не получилось, боюсь.
Хм, а где же любимое: «Для того, чтобы понять рекурсию — надо понять рекурсию»? Или это слишком прямо ;-)
Для того, чтобы объяснить рекурсию, нужно сказать, что для того, чтобы понять рекурсию, нужно понять рекурсию.
В пункте 1.5 (возможно и других) ссылки на «Массив», «Дерево», итд ведут не напрямую на wikipedia.org, а на google.com?url=wikipedia.org. Думаю стоит их сделать сразу же прямыми — нет никакого смысла заставлять участвовать Google для того чтобы привести пользователя на wikipedia с habrahabr.
Ой. Поправил. Это наверняка из-за того, что я сначала писал перевод в гугл-доке.
проверьте все ссылки. У меня ни инфографика с начала статьи не открывается, ни статьи из п.1.5…
Ох… Чертов гугл :) Вроде все битые ссылки поправил!
Небольшая придирка по поводу пункта 2.6: если доказать что P=NP, то мы сможем «взламывать пароли (RSA...)» — думаю что лучше сказать «шифры» вместо паролей. Лично я даже не смогу с ходу назвать где есть взаимосвязь между RSA и паролями — они не пересекаются на практике, а вот шифры (пусть и не столь точно) всё же куда ближе.
Наверно имеется ввиду передача зашифрованного пароля по SSL.
С рекурсией вышло мягко говоря не очень здорово, т.к. в аналогии описывается приращение цикла скорее, чем рекурсия. Да, любую рекурсию можно сделать циклом и наоборот. Но если уж автор описывает рекурсию, то наиболее просто её описать, представив себе два зеркала напротив друг друга. Комментарии здесь излишни, я думаю.
А вот тут очень хорошо показана разница между циклом и рекурсией: https://www.ibm.com/developerworks/ru/library/wes-1307_col_paskin/, посему, мне кажется, этот пункт, с рекурсией, остро нуждается в том, чтобы его переписали.
Также сколь проста, столь и кошмарна аналогия «Объект — существительное, метод — глагол». Она подходит лишь для тех, кто даже не собирается заниматься программированием, а так, любопытствует, хочет хапнуть с поверхности. Ничего, что конструктор объекта — это метод? ничего, что деструктор — тоже метод? их можно назвать глаголами, в том смысле, что «создать — уничтожить», но такая аналогия создаёт кривое представление о сути.
Что касается объекта, я бы привёл аналогию с аптечкой, а ещё лучше аналогию со строгим учётом наркотических препаратов в больницах. Память — это полки с препаратами. Объект — сами препараты. Наш набор данных. Из этого набора берётся тот или иной препарат и применяется тем или иным образом. Это методы. Тут хорошо, кстати, раскрывается понятие полиморфизма: один и тот же препарат можно использовать и как лекарство, и как средство достижения удовольствия.
Когда заказанный препарат приходит в больницу, оказываясь на полке — это можно назвать конструированием объекта в памяти. Когда мы используем препарат с той или иной целью — это методы, причём каждый препарат — это одно свойство, а каждый способ применения — это метод.
Когда же срок годности препарата заканчивается, либо заканчивается он сам, либо необходимость в нём, что мы делаем? правильно: утилизируем препараты, метод утилизации препарата — это деструктор.
И такая аналогия не совсем точна, учитывая сообщения объектов, но она, по крайней мере, полнее отражает понятие.
Да, любую рекурсию можно сделать циклом и наоборот.
Доказать сможете?
Формально, к сожалению, нет: я самоучка, а математический язык (теория множеств, конечных автоматов, машина Тьюринга и т.п.) уж слишком абстрактны для моих мозгов; в этом смысле я похож на человека, который кое-как понимает язык (математики), но говорить на нём не может. Увы. Мозгами обделён в этом смысле. Это доказанный до меня общеизвестный факт наподобие треугольника со сторонами 3, 4 и 5 единиц измерения (теорема Пифагора имеется в виду).
Можно, конечно, выковырять доказательство гуглом (отдельный привет ресурсу arXiv.org) и привести его тут, но это не будет «моим доказательством».
А мне наоборот очень понравилась аналогия с рекурсией. Я не вижу тут цикла. Есть функция, которая принимает человека в зале, возвращает номер его ряда. Она определена через себя саму же и через константу 1 для тех, кто сидит в первом ряду. По-моему, это классическая рекурсия, и, на мой взгляд, одна из лучших аналогий в статье.
Мне кажется, не нужно хотеть от аналогии многого — на то она и аналогия, чтобы не соответствовать на 100% :)
Отличная статья. Бородатые программисты пытаются самоутвердиться за счёт неточностей любой аналогии. Но при этом для новичка данные аналогии необходимы для быстрого понимания и вхождения в сферу. Дальше картину мира можно уточнять и детализировать, тогда аналогия уйдет на второй план.
Не люблю профессоров, которые не могут себе позволить аналогии, геймификацию, юмор для обучения, в силу их неточности. Например, преподавание формальных систем, лямбда-исчисления, формальной логики может быть веселым и понятным за несколько дней, после чего их можно уточнить детальными спецификациями, а можно сразу навалить математики на голову неподготовленного человека. Ставлю на то, что метод с аналогиями будет работать быстрее.
Девушка: пусть он первая подойдёт

Исправьте ошибку
Sign up to leave a comment.