Комментарии 419
Программирование это далеко не только написание кода. К сожалению многие об этом забывают.
Программирование: это построение исполняемой системы с заданным, запрограммированным поведением, исполняющей требования заказчика по быстродействию, отзывчивости, надёжности, устойчивости и так далее.
Одно неверное движение и одна ошибка превращается в десять неприятных последствий, простоев, задержек, сбоев, финансовых потерь и, возможно, трагических для жизни и здоровья ситуаций.
Проект коммерческий? Нет. Привели ошибки к экономическим потерям? Да.
Что, по вашему, меняется от наличия заказчика как отдельной сущности?
Я поставил слово «коммерческая» потому что упомянули «заказчика».
Заказчик — человек, ставящий ТЗ. Внимательно: я не говорю, что он платит, а говорю, что он ставит ТЗ, потому, что разбирается в предметной области. Ещё раз и по буквам: заказчик понимает предметную область, при этом проект запросто может быть волонтёрским (соответственно, не оплачиваться)
Вы запрограммировали с багами.
Ключевое слово — «запрограммировали». Был выполнен акт программирования.
Акт программирования. Я заскринил, это должно остаться в истории
Оно не отвечало, условно, ни требованиям экономической выгоды, ни «быстродействию, отзывчивости, надёжности, устойчивости и так далее».
Программирование при этом было.
Допустим, если я натравлю нейронку на исходники, и заставлю её генерировать что-то, внешне похожее на исходный код. Так вот, выхлоп нейронки, внешне похожий на исходный код, даже если он не будет компилироваться, будет ли являться мифическим "актом программирования"?
В данном проекте — заказчик вы и бенефициары от этой грядки (скорее всего — вы же и ваша семья).
Ну или можно сказать, «И так сойдёт», если вы не несёте никакой ответственности за последствия использования вашей программы и возможные убытки.
Что-то типа того, что Заказчик, это прямая и неразрывная связь с коммерческим фактором (комм. фактор не обязательно выражается в деньгах, но и простое конечное «спасибо» от брата, конечно, комм. фактором не является). То есть, если, для примера, исключить слово Заказчик, то и недоразумения бы не было. Могу и ошибаться.
Кмк, Ваша формулировка очень даже хорошо конкретизирует современные реалии программирования. Причём лично мне, субъективно, вообще вот прямо очень нравится наличие слова «построение».
Если пишешь для себя, может, требования и пониже, зависит от человека. Но когда кто-то другой пользуется программой, тут уже можно и в суд подать, если что.
Ну вот у ваших пет-проектов (если они есть) есть заказчик. Этот заказчик — вы сами. И нет, никаких коммерческих обязательств актор "заказчик" не налагает. Заказчик — это источник требований. Им может быть, грубо говоря и пёс Бобик, которому делается конура.
Как мы видим (я и сам вынужден был призадуматься), оно влечёт/может влечь за собой дополнительные смысловые включения (да, можешь и сам быть для себя Заказчиком. А может и сторонний Вася им быть, за деньги — комм. фактор — то, о чём я и говорю — доп. смысловые включения, могущие увести не туда).
Без этого слова, ни теряется ни бита ни смысла, ни духа утверждения, значит, вполне вероятно, что в этом слове нет нужды. Примерно таков ход мыслей, который я излагал.
Глубоко ошибается тот, кто думает, что изделиями программистов являются программы, которые они пишут. Программист обязан создавать заслуживающие доверия решения и представлять их в форме убедительных доводов, а текст написанной программы является лишь сопроводительным материалом, к которому эти доказательства применимы
— Эдсгар Вибе Дейкстра
habr.com/ru/post/163393
Почитайте комментарии, там много инетерсного и неожиданного.
Поддерживаю. Автор статьи описывает программирование как некую элитную и исключительную профессию. Однако, если бы программирование было действительно таким сложным, то оно бы не стало одной из самых распространенных профессий сегодня.
Конечно, в программировании есть сложные аспекты, как наверно, в любой другой профессии, требующей высшего образования. Кстати об образовании. Для программирования вовсе необязательно иметь высшее образование. Можно закончить средне-специальное и тоже быть программистом. Карьерный успех зачастую зависит от навыков. Даже и без специального образования иногда принимают на работу программистов, если видят, что есть хорошие навыки и мотивация.
Всем сторонникам "прогроммирование — для всех" советую зайти на qna.habr.com, подписаться на всякие популярные теги, типа "программирование", и попробовать поотвечать на вопросы.
Потом ужаснуться от того, насколько тупые бывают люди.
Программирование требует прежде всего алгоритмического склада ума. Нужно уметь составлять абстрактную последовательность действий и манипулировать ею. Некторые люди такого лишены.
Если всю жизнь только формошлепать, то да — ничего сложного, в общем-то нет. Но в любом более или менее большом проекте возникают "алгоритмы", да и просто надо в голове держать множество абстрактных сущностей и их связи. Это сложно. Хорошая наглядная аналогия тут.
ИМХО: современный коммерческий фронт — достаточно сложный. Часто в нем есть и оптимизация производительности и многопоточность и "толстая" бизнес-логика. Мы в той точке, когда и "формошлепство" перестало быть совсем простым :)
Не бывает однопоточных языков, бывают однопоточные окружения. Касательно js же — даже в браузерах есть web workers, а уж за пределами браузеров с многопоточным окружениям для js всё в порядке.
современный коммерческий фронт, поэтому я и спросил. Если речь про Web workers хорошо, пусть будет так. Но это явно не классическая многопоточность. Где потоки имеют доступ к общему контексту. И где возникают race conditions.
Т.е. вы использовали своё особое определение многопоточности, о котором ничего до этого не упоминали. Ничего удивительного что вас не поняли.
своё особое определение многопоточности
Все-же дополню своей ответ. Я использовал не особое и не свое определение, я использовал классическое определение языка поддерживающего многопоточность(Ниже уже расписал, чем эти языки отличаются от js, пусть браузерного).
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
Вы путаете теплое с мягким. Ajax к многопоточности вообще отношение не имеет, ajax — это про асинхронность, а не многопоточность, в общем случае это не перескающиеся вещи. Чо такое shell_exec в php я к сожалению не знаю.
Небольшой дисклеймер: чтобы называть язык многопоточным нужно чтобы в стандарте языка было определено понятие потока и указана возможность существования более одного потока. В JS поток не определен, (как кстати и в C++ до C++11). Это не делает язык однопотоным, это просто означает, что язык не поддерживает многопоточность. Использовать язык без поддержки многопоточности в в многопоточной среде можно (как пример тот же C++ до С++11), однако все что касается многопоточности в таком случае определяется платформой, а не языком.
Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным.
Если какой-то процесс (в широком смысле) распадается на несколько потоков исполнения которые выполняются не в фиксированном порядке, то это вполне себе многопоточность по определению.
Т.е. вы использовали своё особое определение многопоточности, о котором ничего до этого не упоминали. Ничего удивительного что вас не поняли.
Использованное "своё особое определение многопоточности" очень даже совпадает с определением каноничным:
https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C
mrsantak, ознакомьтесь с определением многопоточности, и ответьте на вопрос, почему web workers не являются потоками
Я нигде не говорил, что web workers не являются потоками, более того я web workers приводил как пример многопоточности в браузере.
Что же касается "своего особого определения многопоточности", где там по вашей ссылке в определении упоминается, что
потоки имеют доступ к общему контексту. И где возникают race conditions.
?
PS Интересно, что ваше "каноничное" определение несколько различается в русской и английской версиях этой статьи. Видно в разных языках свой "канон".
Технически очень давно стала его реализация, V8 умеет распараллеливать некоторые пути, просто делает он это неявно для программиста
WebWorkers / WebAssembly в помощь
Думаю имеются ввиду Workers. А что вы вкладываете в термин "однопоточный язык"?
Уже не первый раз встречаю подобное мнение и мне оно до сих пор не понятно. Просто любопытно, создать поток в с++98 можно? можно, да в std98 нет сущностей для работы с потоками но там до сих пор нет ни чего и для работы с сетью что же теперь будем говорить что c++ не может в сетевое взаимодействие?
Ну да, все что касалось многопоточности до С++11 — это по большей части фичи предоставляемые конкретными платформами. А в 11 версии появились стандартные примитивы с общими контрактами для всех платформ. Многопоточность — это ведь не только про запустить тред, это еще про то как треды могут взаимодействовать, как происходит обращение к общей памяти, что из неё можно прочитать и т.д.
Ну так реализация блокировок и запуска потоков как была в системных libpthread или в WINAPI так и осталась, ни чего "нового" 11 стандарт касаемо многопоточности не принёс ровно эта же обёртка над системным api уже была в boost за долго до STD11. Так почему же некоторые считают что c++98 с boost::thread или любой другой плюсовой оберткой или без нее не многопоточный, а c++11, в котором фактически полностью перенесли реализацию из boost::thread, стал многопоточным?
C++11 — первая из версий со стандартизированной моделью памяти (memory model).
До этой версии в C++ не было универсального синтаксиса указать компилятору точки синхронизации. Все компилировалось и оптимизировалось как однопоточная программа.
Ну так реализация блокировок и запуска потоков как была в системных libpthread или в WINAPI так и осталась, ни чего "нового" 11 стандарт касаемо многопоточности не принёс ровно эта же обёртка над системным api уже была в boost за долго до STD11.
Вы серьезно не видите разницу между "было в сторонней библиотеки" и "стало частью стандарта языка"?
Так я ровно это и писал. Все что было до С++11 — это какие-то платформозависимые штуки, которые на каждой платформе работают по-разному. Поэтому многопоточности не было в языке, но она была в платформах.
А если вы про "было в сторонней библиотеки", так речь про возможность запустить поток в принципе.
С99 это многопоточный язык ведь для него вообще ни чего не изменилось?
в чём отличие std::thread/std::mutex/… от boost::thread/boost::mutex/...?
зависимость от pthread в gcc ни куда не делась и даже не перекочевала в сам stdlib так что же поменялось в «языке»?
вот auto, decltype, variadic templates это изменения в «языке» которых раньше не было и они реализовывались хаками. Но вызов системного api это часть языка и она ни куда не делась и не поменялась, просто завернули это в красивый «фантик»
> платформ зависимые штуки, которые на каждой платформе работают по-разному
они и сейчас работают по разному тут ни чего не поменялось
Вот в js нет «многопоточности» и ни какими средствами языка не создать поток без добавления этой возможности в интерпретатор.
С99 это многопоточный язык ведь для него вообще ни чего не изменилось?Однако.
в чём отличие std::thread/std::mutex/… от boost::thread/boost::mutex/...?В том, что для
std::mutex
гарантируется, что обращение к ресурсу защищённому мютексом компилятор не сделает до взятия мьютекса, а для boost::mutex
— это не гарантируется.Boost, конечно, старается всячески это обеспечить, но без поддержки со стороны компилятора — он этого сделать не может.
Но вызов системного api это часть языка и она ни куда не делась и не поменялась, просто завернули это в красивый «фантик»Вот только есть одна беда:
std::mutex
не вызывает системный API (вернее не всегда вызывает — с точки зрения корректности это то же самое).Вот в js нет «многопоточности» и ни какими средствами языка не создать поток без добавления этой возможности в интерпретатор.Главная проблема в том, что там нет модели памяти подходящей. А не в том, что нельзя соответствующие системные вызовы в JS «прокинуть».
не могу сказать что согласен подобным определением, но это прояснило для меня что подразумевалось под «С++98 не многопоточный».
Проблема в том, что виртуальная машина, на которой построен компилятор построена на приципе as-if: компилятор может производить любые преобразования программы если обращения к
volatile
-объектам и внешним ресурсам не перемещаются.Соответственно любое обращение к одной и той же переменной из двух потоков — может привести к непредсказуемым последствиям.
Независимо то локом и прочего всего.
На практике это ограничивалось тем, что LTO было ограниченным, но всё равно всё время возникали проблемы разного рода. Когда компилятор «видел» слишком много и оптимизировал программу неожиданным образом.
А для сетевого взаимодействия (и многого-многого другого) «as if» достаточно, там не нужно язык менять.
Это язык в котором две независимые функции из одного и того же контекста не смогут выполняться параллельно. Только одна за другой.
Наглядный пример:
var x = 0;
function test() {
x = x + 1
}
setTimeout(test, 0);
setTimeout(test, 0);
В js (браузер), x всегда будет = 2 т.к. race condition невозможен. В многопоточном языке пришлось бы использовать, например, мьютекс.
Просто внутри функции test должно быть не один x=x+1 а несколько вызовов функций и т.д. И в этот момент начинается гонка вызовов
async function downloadAndSaveContract(syncSystem, id){
const contract = await getContractFromServer(id)
await syncSystem.saveContract(contract)
}
Где система синхронизации может одновременно сохранять только один контракт, потому что делает пересчет структуры. А фишка в том, что пользователь может параллельно делать изменения, т.е. его следующее изменение должно быть вызвано после завершения функции.
Я бы, конечно, реализовал это по другому, но суть такова.
Да в любом месте, где реализуется более одной функции операции и участвуют хоть чуток промисы и setTimeout можно получить неуправляемый код, который будет менять и перебивать очередь исполнения как захочет.
Даже из недавнего: обнаружил баг в интерпретаторе javascript для react.native, когда два вызова вобще работали в одном scope.
А то, что вы описали в обычных языках решается простыми атомарными операциями.
А то, что вы описали в обычных языках решается простыми атомарными операциями.
Формально в js(браузер) все вызовы функций эксклюзивные и атомарные.
Т.е. когда функция начала свое исполнение, то мы можем быть спокойны, что другая функция извне не прервет выполнение текущей или не будет выполнена параллельно. Соответственно для x = x + 1 мне не нужен мьютекс. Если из вашей функции убрать все await, т.е. сделать ее обычной функцией, в которой есть вызов двух связанных асинхронных функций, то это не нарушает принцип атомарности выполнения всей функции. Просто нужно понимать, что асинхронные функции будут отправлены в очередь исполнения, а не сразу же начнут свое выполнение — соответственно это решается просто на уровне архитектуры, без использования каких-либо техник многопоточного программирования, по типу мьютексов или семафоров.
В настоящем многопоточном языке, например golang, ситуацию, когда две и более горутин(асинхронных функций) пытаются, например, инкрементить одну и ту же переменку не обойтись без эксклюзивных локов/атомарных операций или каналов.
НО с вашим примером я согласен, тут потребуется применить те или иные техники(например очереди апдейтов), чтобы синхронизировать асинхронные вызовы. НО их можно решить только с помощью архитектуры и даже без await.
Организация управления в голанге или Си\Си++ требует более высокого управления очереди исполнения на основе той же многопоточности (мьютексы, потоки, каналы, атомарность и т.д.).
Однако определенная «правильная» архитектура кода не всегда решает в виде исполнения, поскольку поток исполнения не настолько контролируемый в JS, поэтому и появились все эти недокостыли в виде Promise и setTimeout. Как таковая, по сути, многопоточность отсутствует, ну существует жесткая асинхронность, которая порождает проблемы той же race condition, что и приводит нас к данному результату.
По сути, той же фигни можно достигнуть на том же голанге — суть именно в архитектуре. И тут мы приходим к тому, что даже неожиданное говно можно получить на любом языке.
P.S.: мне пришлось внедрить систему lock/unclock для того, чтобы освобождать/блокировать поток исполнения определенной функции. Более того, эта проблема даже в виде 2 инстансов на один код, тут пришлось добавлять код в виде
sleep(randomint*(SPECIAL_RANDOM_TO-SPECIAL_RANDOM_FROM))
(почти передал, но вы поняли)И нода 14 насколько я знаю тоже позволяет запускать отдельные потоки, а не просто асинхронно работать в одном системном потоке.
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
Некторые люди такого лишены.Нет таких людей. Когда-то то же самое говорили про банальные квадратные уравнения. А до того — про умение читать и писать.
Огромная проблема: этому умению не просто никто не учит, но, в течении десятка лет людей думать отучают.
Но даже это ведь не самое главное! Главное в том, что если люди научатся думать, то современное общество просто рухнет. Как можно впариь человеку очередные «закруглённые уголки», если он понимает, что ему они не нужны?
Если всю жизнь только формошлепать, то да — ничего сложного, в общем-то нет. Но в любом более или менее большом проекте возникают "алгоритмы", да и просто надо в голове держать множество абстрактных сущностей и их связи.Знаете, в статье прозвучала отличная, годная, аналогия:
Приготовление пищи — это сложная задача, требующая терпения и внимания к деталям, много знаний и опыта.И да, программирование не сложнее, чем умение приготовить вкусный обед «из того, что осталось в холодильнике». И там и там нужно держаь в голове множество абстрактных сущностей и их связей… иначе съев салат из огурцов и запив его молоком — вы получите «превосходный резульатат».
Но при этом неумение программировать — счиается нормой (а иногда чуть ли не доблестью), а приготовить какой-никакой обед — любая домохозяйка умеет. Вот и вся разница.
P.S. И да — любая домохозяйка не сможет поспорить с поваром с мишленовской звездой. И программировать как Джефф Дин тоже сможет не каждый. Но это, всё-таки, другая история. В любом деле есть люди, делающие что-то сильно лучше других…
Лишены ли люди этого с рождения, или просто их никто не научил — совсем неважно.Зависит от временного масштаба, о котором мы говорим.
В течении столетий человек подавляющее большинство людей находили работу за счёт вещей, которые, с одной стороны, «не требуют никакого обучения», с другой стороны, на самом деле — являются дико сложными. Ну там, умение ходить «на своих двоих», говорить или носить предметы. Даже не буду про нейронные сети и сложности распознавания образов… просто вспомните сколько каждый маленький человечек тратит лет, на то, чтобы освоить эти «тривиальные» задачи.
По сравнению с этим какое-то там программирование — фигня. Нужно будет — освоят. Даже если 100% работ будут этого навыка требовать.
Но вот прямо сегодня, сейчас… да, для людей, которых отучили думать — это всё проблема большая.
Или сломают нафиг станки.Ну эту-то проблему давным-давно научились решать:
В какое-то время войска занимались подавлением луддитских восстаний сильнее, чем сопротивлением Наполеону на Пиренейском полуострове.Тоже мне проблема.
Или вот историю про калифорнийского бомжа, которого один чувак учил-учил программированию, даже апп в аппсторе вместе опубликовали, а бомж в итоге решил дальше бомжевать, потому что это проще, вы наверняка слышали. И это воспроизводимая история.Лехко. Только она говорит не о проблемах изучения программирования, а о мотивации.
Я видел людей, которым правда не помешали бы лишние деньги, ибо их текущая работа позволяет, ну, очень мало благ, но вот программирование что-то не заходит.Если им програмирование «не знаходит», значит им лишние блага не нужны. Как тому бомжу.
Оставьте уже их в покое.
Почти все истории успешно вошедших в айти — «было техническое образование», «был вуз с лабами по программированию», всё такое.А почти все истории безуспешного вхождения — «денег я, конечно, хотел, но учиться было лень».
А как эту теорию — каждый может программировать — можно опровергнуть? Или это из разряда "человек — это звучит гордо", являющихся лозунгами, а не теориями?
Если же речь о профессиональном программировании со сложными алгоритмами, то может отнюдь не каждый.А тут — всё та же аналогия с готовкой еды.
Научиться готовить что-то съедобное и не умереть с голоду — может каждый (все, кто не могли, давно умерли и потомства не оставили).
А вот уже готовить так, чтобы в ресторан с тремя Мишленовскими звёдами взяли — уже нет.
Более того куча людей когда хотят «войти в айти» ориентируются совсем не на минимальные зарплаты айтишников. Им же хочется много зарабатывать.Им хочется «много зарабатывать после трёхмесячных курсов». Сейчас вообще духнедельные появились. Там учат только писать резюме и собеседования проходить.
А это доступно ещё меньшему количеству людей.Если бы к программированию относились бы так же, как к хирургии… где вас будут “дрючить” несколько лет, перед тем, как скальпель в руки дадут… 90% (если не 99%) освоили бы.
Конечно если вы только посмотрите курс C++ какой-нибудь, не делая вообще никаких упражнений (зачем зря время тратить) — то на «много зарабывать» вы не научитесь.
По сути согласен полностью.
Лишены ли люди этого с рождения, или просто их никто не научил — совсем неважно.
Но при этом нельзя забывать о том, насколько тяжело людей этому научить. Например, Читать. Хоть медленно и по слогам, но можно научить читать практически любого человека. Или писать. У некоторых почерк всю жизнь корявый, но учат практически всех.
С другой стороны — рисовать. Как и письмо, это тоже вазюканье чем-то по бумаге. ИЗО есть практически во всех школах, и рисование — одна из самых частых активностей, чтобы занять детей. Тем не менее, рисовать, чтобы хотя бы понятно было, что же там нарисовано, могут далеко не все.
На мой взгляд, программирование — это сложный навык и значительная часть людей не овладеет им, сколько курсов они бы не проходили. Ну, черепашку сдвинуть в форме квадрата они смогут, а спиралью — уже никак.
Просто я встречал людей, которые могут вывести все числа из массива, умеют просуммировать каждое второе число в массиве, но вывести каждое второе — вообще никак не могут. Даже после тыканья носом — вот тут ты выводишь числа, вот тут обрабатываешь как-то каждое второе. Совмести же эти 2 действия! Никак.
… значительная часть людей не овладеет им…
… я встречал людей...
Ваше хобби — интерполировать?:)
Медицина не находит каких-либо фундоментальных причин, почему человек с нормально функционирующим мозгом не мог бы обучиться программированию по крайней мере на среднем уровне. Как и рисованию.
Научиться чему-то может быть очень сложно. В некоторых случаях настолько сложно, что человек возможно просто не готов прикладывать достаточное количество усилий. Но это не означает принципиальной невозможности, что выглядит очевидным при анализе проблемы «аналитическим» умом.
Научиться чему-то может быть очень сложно. В некоторых случаях настолько сложно, что человек возможно просто не готов прикладывать достаточное количество усилий.
Если человеку для овладения навыком нужно 20 лет постоянного обучения с индивидуальным инструктором, то с практической точки зрения можно считать, что этому человеку не дано овладеть этим навыком.
Понятно, что мир не черно-белый, но обратное утверждение "программирование доступно каждому" — оно еще дальше от правды. Оно создает поток вайтишников, "синдром самозванца" у программистов и понижает престиж профессии.
но обратное утверждение «программирование доступно каждому» — оно еще дальше от правды.
С точки зрения формальной логики, утверждение «программирование доступно каждому» все таки ближе к правде, даже с учетом ограничений вроде «у вас не поврежден мозг, нет некоторых заболеваний, влияющих на мышление и вы не слишком стары, чтобы не успеть его освоить».
Оно создает поток вайтишников, «синдром самозванца» у программистов и понижает престиж профессии.
Вы как будто на них обижены. Меня вот крайне мало волнует пристиж профессии, к тому же есть много профессий пристижнее, почетнее и доходнее. Поток «вайтишников» был всегда, это лишь ответ рынка, вы как специалист высокого (на сколько я знаю по комментариям) уровня вообще не должны за это переживать, ваша работа будет только дорожать, т.к. если раньше, условно, вы входили в топ 15%, то будете входить в топ 5%, просто из-за роста базы.
А как с этим связан «синдром самозванца» я вообще не представляю. Это скорее проявление эффекта Даннинга-Крюгера.
У меня в новых для меня темах тоже бывают проявления подобного синдрома, в основном по причине давления извне и открывшегося поля познания, которое вызывает ощущение «блин, как же много всего, как я вообще сюда попал, я не потяну». Но по мере познания обычно проходит и все входит в обычное русло. Конечно на исходе третей пятилетки уже нечасто такое бывает, но все таки бывает.
Потому и получается первое, а не второе. И когда люди перестают программировать всё на совесть, потому что «иначе не могут», а начинают делать то, за что платят — вот это и получаем.
Тем не менее, рисовать, чтобы хотя бы понятно было, что же там нарисовано, могут далеко не все.Та же самая проблема. Возьмите учебники, рисуйте, адапируйесь. Через, условно, 1000 часов практики — будете рисовать весьма неплохо.
Нужно ли это вам? Это уже другой вопрос.
могут далеко не все.
на уровне "чтобы хоть что-то было понятно" — могут все. Ещё в школе есть резкий фильтр — нормально учат рисовать — дай бог в 1 школе на 100. Другое дело, что рисовать как Васнецов — вот это да, тут уже сложности начинаются. А вот рисовать на уровне уличных шаржистов графику — может научиться большинство так точно. Времени только надо существенно затратить, а профит гарантирован только для личной эстетики.
Тем не менее, рисовать, чтобы хотя бы понятно было, что же там нарисовано, могут далеко не все.
"Палка-палка-огуречик" рисовать могут чуть менее чем все. И это уже уровень вполне достаточный для донесения мыслей, схем, историй. Опять же, тот же xkcd, ага.
Итог один, предпосылки разные, как и разница в том, что научить то можно, а вот «принципиально лишенных» уже не исправишь.
Ну и аппеляция к «складу ума» тоже эм… такая себе. Аналитическое мышление вполне развивается со временем, если к этому прикладывать усилия.
Нет таких людей. Когда-то то же самое говорили про банальные квадратные уравнения.
Тем не менее, общепринято, что математика дается не всем. Понятно, что нет физиологических ограничений — просто некоторым людям для достижения того же уровня что в математике, что в программировании надо приложить гораздо больше усилий. Если человеку, чтобы стать нормальным программистом нужно учиться 20 лет по индивидуальной программе, то с практической точки зрения можно считать, что этому человеку не дано быть программистом.
Огромная проблема: этому умению не просто никто не учит, но, в течении десятка лет людей думать отучают.
Пахнет теорией заговора.
И да, программирование не сложнее, чем умение приготовить вкусный обед «из того, что осталось в холодильнике». И там и там нужно держаь в голове множество абстрактных сущностей и их связей…
О да… как же много сущностей в холодильнике и помидоры, и курица, и даже молоко, а какие связи… огого. Вы преувеличиваете сложность готовки. Есть просто одна сущность — отношение "сочетаемости" продуктов. Известно, что курица и рис сочетаются хорошо, а соленые огурцы и молоко — нет.
Плюс нужно иметь опыт — набор картинок и чисел, чтобы представлять, что вот такой вот кусок нужно жарить примерно вот столько и на таком огне и когда он такого цвета — он готов. Плюс механический навык нарезки разделывания.
просто некоторым людям для достижения того же уровня что в математике, что в программировании надо приложить гораздо больше усилий.Нет. Не нужно. Количество усилий на обучение нужно примерно одинаковое у всех. Где-то от 500 до 1000 часов.
Если человеку, чтобы стать нормальным программистом нужно учиться 20 лет по индивидуальной программе, то с практической точки зрения можно считать, что этому человеку не дано быть программистом.А это уже ему решать. Но фишка тут в том, что если один человек программирует по 5 часов в день (пусть даже на каком-нибудь калькуляторе с его ужасным диалектом Бейсика), а другого загоняют из-под палки раз в неделю в лабу, где она он два часа что-то такое делает только пока на него преподаваель смотрит, то вот у вас и получится, что один за три месяца доберётся до коммерческого программирования, а другой угробит пять лет с худшими результами.
Но это буде не поому что первому «программирование даётся», а второму «не даётся». А потому что первый реально потратит больше усилий.
Плюс нужно иметь опыт — набор картинок и чисел, чтобы представлять, что вот такой вот кусок нужно жарить примерно вот столько и на таком огне и когда он такого цвета — он готов. Плюс механический навык нарезки разделывания.Ну дык и для программирования нужно плюс-минус всё то же самое. Нужно понимать что и как сочетается грубо — и можно уже что-то такое «ваять».
Нет. Не нужно. Количество усилий на обучение нужно примерно одинаковое у всех. Где-то от 500 до 1000 часов.
Ну, это не так совершенно. Во-первых важен возраст, во-вторых — что называется, "талант", заключающийся в комбе удачи и банальной генетики…
Ну для примера:
https://www.youtube.com/watch?v=2l-3VhZ2Yik
Подавляющее большинство людей НИКОГДА не смогут научиться играть так, как она умеет в 6 (т.е. она училась, фактически, года три, а то и меньше).
Банально неудачная конфигурация сухожилий вам может усложнить обучение на порядок. А если вам под 30 — то не только обучение, но еще и технику игры, т.к. в этом возрасте растянуть сухожилия уже, увы, невозможно. Только на операцию ложиться.
Простите, но ваши рассуждения об обществе и образовании, напоминают то, о чем говорит автор.
Чтобы подчеркнуть своё утверждение, затем вы демонстрируете врага. «Не позволяйте никому говорить, что это неправда» — простой, но эффективный способ внушить аудитории образ мышления «вы против враждебного мира». Неплохо также использовать словечко «гейткиперы», ведь рассуждения о привилегиях и людях, охраняющих их от аудитории, привлекательны. Они не дают вам подняться, они несправедливы, они лгут о трудностях, они заставляют вас заниматься сложной, скучной работой.
По поводу того могут ли люди быть лишены чего-то, тут все просто. Мир несправедлив и это объективная реальность. А лишение определяется не идеалистическим наличием или отсутствием думающего органа, а совокупностью всех факторов. И если винить кого-то во всем этом, то в первую очередь надо начинать с себя: "Что сделал я, чтобы исправить сложившуюся ситуацию?".
И если винить кого-то во всем этом, то в первую очередь надо начинать с себя: «Что сделал я, чтобы исправить сложившуюся ситуацию?».А может этот совет следует направить тем, кто ищет для себя оправданий в том, что они чего-то «ниасилили»?
Программирование — это что-то, что, как и многие другие вещи в нашей жизни, требует от 500 до 1000 часов для освоения. Кто-то может это пройти за пару месяцев (занимаясь по 10 часов в день), кому-то и 10 лет мало (так как из пинками и пряниками удаётся заставить что-то делать хорошо, если пару часов в неделю).
Так сложно это или просто?
Да в целом я согласен с автором статьи. И да действительно, многим дается программирование намного проще. В школе я думал что у меня неплохо получается, пока не увидел людей, который в разы быстрее все схватывают, с условно равных стартовых позиций, не зависящих от опыта. Так что да, для всех по разному.
Но мое сообщение было о другом. Мне действительно не понятно зачем искать какие-то злые умыслы, и искать обоснования в том что иначе якобы общество чего-то не выдержит. Если Вы считаете, что людей отучают, или что люди предпочитают скругленные края, то выхода собственно 2, либо воспользоваться этим, либо наоборот искать пути для исправления ситуации, если такое положение вещей не нравится. Хотя второй вариант обычно не встречает одобрения у общества, так что мне не очень понятно как кто-то чему-то может насильно отучить.
Хотя второй вариант обычно не встречает одобрения у общества, так что мне не очень понятно как кто-то чему-то может насильно отучить.Я эту схему уже где-то описывал, но могу ещё раз.
Смотрите: у нас, в большинстве стран, обязательное образование. Во многих обязательно среднее, но уж начальное — обязательно в большинстве стран.
У учителя — человек 30 в классе. Ну пусть 15 (но и это редкость). И учитель обязан учить всех.
Но часть учеников — «раздолбаи», а часть — «ботаники». Кому будет уделять внимание учитель? Правильно: отстающим. Их он будет «подтянивать», «уделять им внимание» и так далее. Потому как иначе его будут сильно «дрючить». А «ботаники»? А они — как нибудь.
Соответственно маленького человечка вот с самого первого класса приучают: хочешь получить внимание учителя — ничего не учи. И будет тебе внимание. А детям, в современном мире, внимания всегда не хватает.
Что это как не целенаправленное отшибание желания учиться?
Мне действительно не понятно зачем искать какие-то злые умыслы, и искать обоснования в том что иначе якобы общество чего-то не выдержит.А нет никаких теорий заговора и «тайных сговоров». В том-то и дело, в том-то и ужас всего происходящего, что всё делается «из самых лучших побуждений».
Удивительно вот что: все уже, вроде как, признали, что уравниловка ни к чему хорошему не приводит. Что «всеобщая занятость» фактически эквивалентна «всеобщей халтуре».
Но вот в области образования — мы не только продолжаем пропогандировать этот подход — мы его усугубляем. Греф вообще предлагает физматшколы позакрывать: «детей надо развивать равномерно «на 360 градусов», чтобы те были непременно счастливыми»! Это всё о том же: тех кто высовывается — притормозим, тех кто не тянет — будем «тянуть за уши».
Ну что за бред?..
То что бред согласен. С тем что дети или учителя что-то обязаны — не согласен. В плане установки может и есть такое положение, которое связывает эту систему через денежные отношения и социум, но моральных обязательств в этом никаких нет. Так что каждый без проблем может делать свой выбор и не мучаться угрызениями совести.
Мне кстати не кажется на самом деле, что такая система результат светлых, но допустим наивных побуждений. По моему мнению все так сложилось, в силу того что это просто удобно, и позволяет снять ответственность. Например с родителей, за образование своих детей. С учителей за какие-то там показатели, выдуманные чиновниками. А с чиновников, перед неким консенсусом, условно называемым современным обществом.
Совсем другой вопрос, зачем и как идти против этого течения. Но вот роптать на него мне представляется бессмысленным, это скорее наоборот вклад в текущее движение.
5-10% безработных вполне достаточно для того, чтобы оставшиеся работали на совесть, зная что они могут оказаться «у помоечки». А вот 100% занятовсть в СССР приводила к тому, что «халтуру гнало» где-то 50%, а может и больше.
То же с обучением: подавляющее большинство людей могут обучиться массе разных вещей (не всему, но очень многому, программированию в том числе), но как только вы гарантируете аттестат — так происходит магия и у 70% образуются многичесленные «нарушения психики», которые «не позволяют им» выучить математику и/или программирование.
Мотивация.
А вот 100% занятовсть в СССР приводила к тому, что «халтуру гнало» где-то 50%, а может и больше.
А мои источники утверждают, что причиной халтуры было множество причин и 100% занятость — не самая важная из них.
А мои источники утверждают, что причиной халтуры было множество причин и 100% занятость — не самая важная из них.Почти все причины — вариации той же темы. 100% занятость, 100% гарантия, что смазки, выпущенные какими-нибудь «заводом консистентных смазок» обязательно возьмут (так как другиз таких заводов нету) и так далее.
Всё — вариации на одну и ту же тему: если «халтура» не приводит к проблемам вот лично для «халтурщика» — то нет стимула делать хорошо.
Кто и как страдает, при этом, помимо «халтурщика» — неважно.
Для детей того возраста большее влияние оказывали другие причины. Остаться на второй год, например, было позорно даже для совсем уж откровенных двоешников.
А нет никаких теорий заговора и «тайных сговоров». В том-то и дело, в том-то и ужас всего происходящего, что всё делается «из самых лучших побуждений».
Ну да, миром правит не Тайная Ложа, а явная лажа (С)
Ну к слову навык чтения развивается довольно рано, еще до школьного возраста. Дальше он лишь тренируется, и то с переменным успехом.
А вот уже с навыком писать все гораздо сложнее. Не все могут нормально писать как в физическом смысле (каллиграфия, 10-пальцевый метод), так и в смысле грамотности
Не все могут нормально писать как в физическом смысле (каллиграфия, 10-пальцевый метод), так и в смысле грамотностиТа же самая история, что с программированием. Каллиграфии ещё век назад учили всех, кто обучался грамоте.
Сейчас — да, решили, что это не всем нужно. Но это другое, чем не всем доступно.
Почему же такая сильная разница, если вы говорите, что разницы нет?
Тем не менее, как я научился читать, я даже не помню этого момента, настолько маленький я был.Вы-то не помните, но ваши родители — помнят.
Это значит, что этот навык не вырабатывается спонтанно.Так и умение читать-писать не вырабатывается тоже! Все эти рассказы про «выучившихся читать по вывескам и газетам из мусорки» — существуют только в художественной литературе.
А на практике — учить читать-писать приходится детей довольно долго.
Почему же такая сильная разница, если вы говорите, что разницы нет?Ну некоторая разница есть, конечно. Это, всё-таки разные умения.
Разные вещи требуют разную базу.
Обучение чтению требует только распознавания изображений — а это в человека вкручено чуть ли не на физиологическом уровне (на самом деле нет, но обучается человек этому буквально в первый год).
Обучение письму требует уже мелкой моторики — потому его так рано не освоить.
А программирование — требует умения мыслить логически и немного математики. Если этого нет — то да, у вас возникнут проблемы.
Само по себе программирование — несложно. Но оно опирается на фундамент, которого у многих в современном мире нет (хотя юридически они получили аттестат о том, что они всё это умеют).
Долго — это сколько? 6 лет? Я именно про читать
> Ну некоторая разница есть, конечно. Это, всё-таки разные умения.
Ага, 6 лет или 30 лет. Совсем небольшая разница
Долго — это сколько? 6 лет? Я именно про читать.От пары лет до пяти. Довольно большой разброс, но где-то так.
Ага, 6 лет или 30 лет. Совсем небольшая разница.Это кто 30 лет программированию обучался? Примеры можно?
Именно программированию, а не базовым вещам, которыим вас должны были, теоретически, обучить в школе.
Да, программирование требует умения логически мыслить и составлять абстракции. Примерно то, чему учат на уроках математики.
С этим у вас проблемы — и с программированием будут «затыки».
Но если логику вы понимаете, то дальше на уже само программирование требуется примерно столько же времени, сколько на чтение и/или письмо.
Ну я вообще-то имел в виду каллиграфию. За 30 лет до сих пор не научился
А программировать я досихпор учусь
Ну я вообще-то имел в виду каллиграфию. За 30 лет до сих пор не научилсяСерьёзно? Сколько курсов прошли, у кого учились?
Или вы считаете, что можно каллиграфии как-то иначе?
Не получится. Каллиграфия — это отдельный навык. Обучиться ему, в общем, не слишком сложно и не слишком долго, но да, ему нужно отдельно учиться.
Правильно держать перо и кисть, правильно «вести» и так далее.
Просто водишь ручкой по бумаге и все само получается.Вы уж определитесь: «всё само получается» или «вы за 30 лет не осилили». А то у вас тут какое-то противоречие.
В это время даже думать можно о чем-то другом.Во время обучения — нельзя.
И то от банального «вождения ручкой» этот навык у меня почемуто за всю жизнь не выработался.Вот именно потому и не выработался, что вы не пытались его выработать.
Я ведь не зря спросил про то, на какие курсы вы ходили и у кого обучались. Это ни разу не был сарказм.
Да, такие курсы существуют и да, они отлично работают. Но нет, оно «само по себе» от возждения ручкой по бумаге не возникает. Что вы сами же прекрасно доказали.
А вы хотите любому остолопу дать учебник по математике, запереть в кабинете и ждать, когда оттуда выйдет эйнштейн. Ну-нуНу как вам сказать, чтобы не обидеть. Если этот остолоп будет применять учебник по математике так же, как вы применяете курсы каллиграфии (то есть никак) — результат будет тот же.
А вы на какие ходили?
О том, что существуют какие-то там курсы каллиграфии, я только сегодня узнал
А вы на какие ходили?Я сам — ни на какие. И каллиграфией не владею. Моей племаннице это было интересно, она ходила. Могу спросить куда, если интересно. Ну или погуглите просто.
О том, что существуют какие-то там курсы каллиграфии, я только сегодня узналНо при этом уже считаете возможным оценивать насколько сложно и долго этому обучиться.
Как-то странно, не находите?
Так и умение читать-писать не вырабатывается тоже! Все эти рассказы про «выучившихся читать по вывескам и газетам из мусорки» — существуют только в художественной литературе.
Это не совсем так как Вы говорите. Я знаю например ребенка который сам худо бедно научился различать буквы спрашивая у родителей а что это, а что то? А потом и самостоятельно складывать их в слоги и слова. Конечно не без ошибок и это было не литературное чтение в 5 лет. но тем не менее он был в состоянии самостоятельно разобрать вывеску. Все зависит от мотивации… Просто у кого-то она есть а у кого-то нет.
Или как с вождением автомобиля. Всем доступно, но лучше бы некоторым было недоступно. В этом исследовании (Луизиана, данные за 6 лет) установили, что 34% аварий происходит с участием 5% водителей.
Т.е. вы утверждаете, что проблема дисграфии решена? Можно вычёркивать такой диагноз, он лечится обычным обучением?
Можно вычёркивать такой диагноз, он лечится обычным обучением?Расшифруйте эту фразу, пожалуйста. Ибо я вас не понял.
Да, дисграфия вполне «лечится», в большинстве случаев, обычным обучением. И ставят такой диагноз, в большинстве случаев, чтобы «ребёнок был счастливым» (это ты не писать не умеешь, это у тебя дисграфия, не грусти).
Означает ли это, что все эти «типа расстройства» — не проблема в 100% случаев? Наверное нет. Какой-то процент людей (1% или 2%), скорее всего, не научатся нормально писать никогда — но их куда меньше, чем людей с соотвествующим диагнозом.
Вы сказали, что ничто не может помешать научиться писать. Я вам пишу — вот есть дисграфия. Диагноз такой. Вы даже о нём знаете что-то. Но похоже — по слухам. А я на практике вижу, что лечится он с большим трудом до уровня "более-менее разборчиво". А до уровня "каллиграфический почерк" и здоровому человеку дойти не всегда получается.
Это знаете, недавно читал статейку — по опросам 10% населения нашей необъятной считают аутизм — проблемой воспитания… Вы видимо из них?
А до уровня «каллиграфический почерк» и здоровому человеку дойти не всегда получается.А как вы дойдёте до этого уровня, если соотвествующих уроков в принципе нету и этому никто не учит?
А я на практике вижу, что лечится он с большим трудом до уровня «более-менее разборчиво».Ага. Вы ещё скажите, что «врачебный почерк» получается таким, потому что у врачей особое строение мозга.
Всё дело в мотивации. Не на 100%, но где-то на 90%, а то и на 99%.
В частности проблемы дисграфии, на практике, в основном в том, что соотвествующие дети не видят проблемы в том, что они рисуют каракули. А не в том, что они не могут научиться писать красиво, заполнив несколько прописей палочками и крючочками.
Я даже не знаю, как с вами спорить — доказательство вашей неправоты это такая тонкая вещь, что писать надо много, а лень. У СССР было много, очень много проблем, помимо 100% плана, занятости и прочего. Гарантий приёмки, кстати не было — для приёмки необходимо было соответствие параметров минимальной планке. Не везде, но за несоответствие — можно было сильно пролететь.
С каллиграфией — даже если бы учили, за вменяемый срок обучиться многие бы не смогли. Потому что для этого надо сильно уменьшать остальную письменную деятельность, а как это сделаешь?
А врачебный почерк получается элементарно — они же латынь учат. И писать на латыни — тоже учат. А ещё они во время обучения много пишут и не всегда за ровным столом. Вот сумма этих условий и сказывается на почерке. А обратно разогнуть — надо время и усилия. Остановить письменную деятельность, упорядочить имеющийся навык.
А про проблемы дисграфии — вы уверены, что у вас достаточный опыт, чтобы говорить про "в основном"? Он у вас вообще есть?
А про проблемы дисграфии — вы уверены, что у вас достаточный опыт, чтобы говорить про «в основном»? Он у вас вообще есть?Личного опыта нет, но есть статистика.
Гланьте хотя бы на документы, заполненные людьми лет 100 назад (когда каллиграфии учили всех) и сегодня. Небо и земля.
Люди за 100 лет, внезапно, стали другим видом?
любая домохозяйка умеет
Выражая в целом интересную мысль (и как минимум — отчасти оправданную) вы так же не смогли избежать попадания в сети стереотипов.
ЗЫ и тем не менее — склонность к тому или иному труду — это реально есть как собственное (черты характера, способности к той или иной деятельности), так и наносное (допустим в обществе не принято общее образование — и начинают считать, что часть населения к нему неспособна совсем… с другой стороны — в обществе с обязательным общим образованием — тоже не всё гладко получается).
допустим в обществе не принято общее образование — и начинают считать, что часть населения к нему неспособна совсем… с другой стороны — в обществе с обязательным общим образованием — тоже не всё гладко получаетсяПро это я тоже писал. Это всё частные случаи Закон Гудхарта.
После того, как общее образование становится обязательным — процент людей, реально владеющих соответствующими знаниями, внезапно, снижается. Потому что где-то 70%-90% людей восьмилетку (и даже первые курсы ВУЗов) могут освоить — кто-то «легко», кто-то «со скрипом», но могут.
А вот когда вы делаете это обязательным — половина на обучение просто «забивает» в небезосновательной надежде на то, что «ну тройку-то нарисуют как-нибудь».
P.S. В борьбе с этим явлением работодатели начинают требовать «вышку», что порождает эскалацию и на поток ставится уже выпуск «корочек». Интересно что дальше будет: будут требовать PhD, чтобы формочки клепать?
А вот когда вы делаете это обязательным — половина на обучение просто «забивает» в небезосновательной надежде на то, что «ну тройку-то нарисуют как-нибудь».
Вы бы на нашу сломанную систему не смотрели — бывают более адекватные системы. А если и ориентироваться на нашу, то годов до 2000х — там тройку "как-нибудь" не "рисовали". Не тянешь — сиди ещё год. И были истории с людьми отсиживавшими до 3х лишних лет в школе. На счёт большего объёма — не слышал.
А если и ориентироваться на нашу, то годов до 2000х — там тройку «как-нибудь» не «рисовали».Рисовали. Примерно с годов с 60х-70х. Точно сказать сложно, но точно не «до 2000х».
Не тянешь — сиди ещё год. И были истории с людьми отсиживавшими до 3х лишних лет в школе.Это были единичные уникумы. И далеко не в каждой школе. И если такое случалось — директору доставалось «по самое не балуйся».
Нет таких людей. Когда-то то же самое говорили про банальные квадратные уравнения. А до того — про умение читать и писать.
Ну т.е. все люди умеют писать музыку, просто далеко не всем эти шедевры понравятся?
Нет таких людей.
Я даже не знаю, считать вашу исступлённую веру положительным или отрицательным качеством. С одной стороны это очевидное порождение Успешного Успеха, где все остальные люди вокруг вас это «ленивые алкаши». С другой стороны — это же какая непоколебимая уверенность в силе любого человеческого разума.
Жаль, конечно, что в любом случае ваше утверждение — это совершенно недоказуемое религиозное убеждение.
![](https://habrastorage.org/webt/rn/2b/pd/rn2bpdu--cc5kbnpmmfb-k2pb1k.jpeg)
Да, программировать непросто, между хелловорлд и работаюшим приложением — пропасть. Но практически все специальности требуют годов обучения. Нормально крутить гипсокартон научиться можно примерно за то же время, что и стать миддлом.
По сути же коммента если: лично я согласен с Вами. Правда в частностях, возможно, не всё так гладко (может и нет, не знаю). Под частностью я подразумеваю и «что считать просто и что считать сложно».
Например, я считаю, что научить программировать условные «средне распространённый сайт» — таки достаточно сложная вещь, — можно любого человека не обременённого давлением внешних факторов и подходящего под пусть и довольное широкое, но всё же определение «здоровый человек». Причём это задача вполне себе не «веков, эонов и эпох», и не «кому-то 5 лет, кому-то 20 лет", а «всего лишь» подачи материала, ±, годик времени разницы (на талант, гены и всё такое) и, ± годик-два боевой практики.
А вот если смотреть на уровни выше среднего, тут, однозначно, ни разу не каждый сможет, совсем ни разу.
П.С.
Анекдот очень понравился, утащил, спасибо!
Я человек простой, мне бы пару примеров, что автор считает сложным в программировании
Понятие сложности зависит от опыта спрашивающего. Применительно к стандартной классификации джун / мидл / сеньор будут три совершенно разных понятия сложности. Например, для джуна или мидла в C++ я могу сходу порекомендовать «Modern C++ Design: Generic Programming and Design Patterns Applied» Джун скорее всего в ней вообще ничего не поймет, а мидл будет долго пытаться понять, как все это работает. Это если мы говорим непосредственно о коде. Если же подняться повыше, то сразу всплывает тема дизайна, и вряд ли нужно объяснять, почему доверять дизайн джуну или мидлу не самая хорошая идея.
Вот пример типичных задач абстрактного мобильного приложения https://habr.com/ru/post/549642/ описанные проблемы и способы их решения это сложно.
Такие виды программистов не ощущают собственной ответственности за сделанную работу — ЗП и так придет, зачем напрягать мозг.
Зачем вникать в предметную область и быть хорошим спецом, можно сделать буквально то, что мне сказал начальник, что не всегда является правильным путем, а чаще — неправильным.
Такие люди большую часть времени не вникают в собственную работу, они чаще исправляют баги, а еще чаще пытаются вспомнить зачем вообще они ввели какую-то функцию. Стоит ли говорить про отсутствие тестов и адекватных коммитов?
Программирование это совершенно не про написание кода, а про правильную архитектуру всех составляющих. Написание кода — это меньший процент работы программиста, по крайней мере в моем идеальном мире, к сожалению он не такой и в нем живут такие как Вы. Простите.
Я человек простой, мне бы пару примеров, что автор считает сложным в программировании.
Ну например можно взять отсюда: leetcode.com/problemset/all десяток hard задачек, там, конечно, градация размыта и попадаются hard задачки, которые решаются сильно легче некоторых medium, особенно если нечто подобное решал в работе но из десятка сложных можно выбрать пару таких, на которых придется поломать мозг не один день.
Конечно можно возразить, что это больше синтетические примеры, с которыми обычно не сталкиваешься в работе, однако и в работе возникают задачи ставящие в ступор, и потом целыми днями, чтоб ты не делал, в голове как заноза сидит мысль: какжеж эту штуку правильнее сделать-то?
Напишите lock free map, формально верифицируйте его, подберите для некоторого набора данных более оптимальный хеш, обоснуйте свои решения в MD файле.
конечно можно начинать программировать не зная особо ничего, просто по учебнику java. но вы будете слабым программистом (стажер), которому нужно будет вложить много времени и сил чтобы стать серьезным программистом
Ну, да ладно. Ке сера — сера, вот эвер вил би — вил би :)
Попробуйте арифметический энкодер написать для видеокодека по спеке. И чтобы работал быстро. Это для разминки.
жуть зарыта в библиотеках — в каждой свое название и свой способ выполнения одного и того же действия, да что там, у многих свои эксклюзивные типы данных, не совместимые ни с чем кроме этой библиотеки, и вот когда тебе нужно передать данные из одной библиотеки в другую начинается цирк с конями.
Статья чёткая, но один простой момент не упоминается — МАТЕМАТИКА.
Я для себя вывод сделал в универе, а потом его транслировал всем друзьям и знакомым, кто собирался(подумывал) идти на курсы программирования или еще тогда часто встречалось в рекламе: программирование баз данных. Всем им я говорил одно и тоже(слитно?), точнее спрашивал: "Ты математику помнишь?". Причем я не наводил жути, а корректно в спокойной беседе подводил мысль к тому, что настоящий прогер — это человек не просто владеющий хорошим логическим мышлением, не просто человек решающий абстрактные или даже эфимерные задачи(ты по жизни смекалистый — всё получится), но это человек обладающий ХОРОШИМ МАТЕМАТИЧЕСКИМ БАГАЖОМ. И это даже не уровень школьной программы, а гораздо выше. Ибо создавать виртуальные миры, проектировать или поддерживать крупные базы данных(привет реклама курсов), требует знаний диф. уров., интегрального исчисления и тд и тп, не говоря уже о теории графов(её нам читали на послед курсе, и показалась мне сложной — это физ.фак, computer since, начало нулевых), говорил я.
В итоге в беседе я давал понять, что если ты действительно в школе хорошо ориентировался в математике, тогда есть смысл попробовать пройти обучение; давая понять, что рано или поздно вся эта высшая математика будет основным инструментом выраженным на прикладном уровне в твоем умении кодить. А иначе, выше уровня html, css или простеньких баз данных ты не поднимишься, и то хз, если осилишь.
(У самого уровень матеши слабый, поэтому ушёл инженерить в сферу телекоммуникаций, и даже там понимал, что матеша решает, когда речь идет о глубокой настройке протоколов айпи/tcp и выше и тп).
Ибо создавать виртуальные миры, проектировать или поддерживать крупные базы данных(привет реклама курсов), требует знаний диф. уров., интегрального исчисления и тд и тп, не говоря уже о теории графов(её нам читали на послед курсе, и показалась мне сложной — это физ.фак, computer since, начало нулевых), говорил я.
Но это же не правда.
Что сложного в программировании? Просто тычешь в клавиатуру и смотришь в монитор. Сделать самолёт? Легко — просто выплавляешь металл, делаешь детали и собираешь их вместе. Термоядерный синтез? Легкотня — просто берешь дейтерий и тритий и делаешь гелий а на выходе чистая энергия!
Если я могу смешать три ингредиента и сделать омлет, то это не делает меня шеф-поваром. Я могу готовить несколько блюд, но никогда не скажу, что готовка — это просто. Приготовление пищи — это сложная задача, требующая терпения и внимания к деталям, много знаний и опыта.
Шеф-поваром вы не станете, но поваром — без проблем. Готовить пищу, это легко, достаточно прочитать рецепт, взять именно те ингредиенты и в том количестве, и сделать всё так же, как написано в рецепте. В подавляющем большинстве случаев (если рецепт был верным, вы сделали всё как в рецепте, а ваша духовка — не убитый хлам, в котором температуру точно выставить нельзя, а слева греет в два раза сильнее, чем справа) у вас всё получится. Приготовление пищи — это просто.
Так же и в программировании. Прочтите и сделайте по рецепту. Вы не станете гуру, не станете сеньором, у вас не будет глубокого понимания архитектуры, но поставленную задачу вы вполне себе решите.
Если человек купив в магазине фарша сегодня делает котлетки, завтра фрикадельки, потом перцы фарширует, лазанью, люляшки — это программист. Если всю неделю у него на ужин макароны по флотски — это кодер. Если добавляет сначала кетчут, потом мазик, потом соевый соус — формошлеп. Если же на следующий раз он берет в магазине уже не фарш, а отдельно несколько видов мяса и мелет сам, то это уже очень продвинутый программист.
Ну вот, а я так люблю макароны по флотски :( Придется теперь выкинуть ингредиенты под тесто для макарон, спрятать мясорубку и пойти купить фарша под котлетки/перцы/что_там_еще.
В таком случае, скорее всего, вы и не будете готовить, а просто подключите библиотеку AllBusinessTaskCoresInTheWorld.JS, шлёп-шлёп и в продакшен возьмёте еду из магазина, положите на свою тарелку и разогреете. Другой вопрос, что если задачу вам надо решать постоянно с некоторыми отклонениями, а решать вы её продолжите навешиванием костылей на то же самое, то рано или поздно столкнётесь с диабетом и ожирением тем, что проще будет уже всё переписать с нуля.
заготовку для пиццы
Это такая хрень, из которой пицца не получается от слова совсем? Неужели так сложно взять простое/сдобное дрожжевое тесто и раскатать кругляшь. Если не умеешь правильно раскатывать (я умею плохо) — можно "надыркать" (например вилкой) — тогда пузыриться не будет. Задача решается за ~1-2 минуты на основу.
ИМНО готовка не очень хороший пример для сравнения всех нюансов, т.к. целью является почти всегда удовольствие, а рациональность далеко не на первом месте.
Плюсы: Когда сделал этот рецепт впервые, все вкусняшки были моими. Т.к. у остальных пропал аппетит.
Минусы: Для меня минусов нет!
Но все эти подходы имеют свои ограничения. Например необходимость наличия базовых рецептов хоть как-то подходящих под вашу ситуацию.
А особо прошаренные гуру забивают и на эти условности и придумывают фреймворки/методологии типа су-вид и молекулярной кухни.
Если брать эту аналогию, то на мой взгляд программисты скорее занимаются не готовкой еды, а написанием рецептов.Любая домохозяйка занимается тем же самым, открывая холодильник и прикидывая какие продукты ещё могут полежать, а какие завтра придётся выкинуть…
Но дайте «любой домохозяйке» набор из вообще неизвестных ей продуктов и/или попросите «на бумаге» изобрести рецепт блюда с конкрентыми свойствами и совсем не факт что вам понравится результат.
Можно подумать, у хорошего повара в этом случае результат будет заметно лучше :) Если он конкретно эти продукты не изучал и не знает их особенности приготовления, он будет делать то же самое, что и домохозяйка, и программист, который столкнулся с неизвестной задачей — будет гуглить.
В вашей аналогии настоящий программист это тот, кто составил такой рецепт, а не тот кто просто прочитал и сделал как написано. Второй это просто оператор / кодировщик.
Доктора — это те, кто советует больным людям кушать разные лекарства? Не важно, какие и что потом с человеком будет. Все они настоящие доктора, не как их пренебрежительно называют: шарлатаны, коновалы, гомеопаты, знахари...
Доктора — это те, кто советует больным людям кушать разные лекарства?
Почти. Доктора, это те, которые работают врачами. И те, которые выписывают фуфломицины, и даже те, у которых умирают пациенты. Есть плохие доктора, есть хорошие. Есть доктора, имеющие простую специализацию, есть имеющие сложную. Но тем не менее, они все доктора.
В подавляющем большинстве случаев… у вас всё получится.Ха-ха-ха! Ха :(
что там есть такая поговорка, что-то вроде :«если ничего не умеешь — иди в программисты» :)
Возможно это такая шутка, но все же.
Может быть, я ориентируюсь на местные израильские реалии. Но думаю точно не сложнее чем получить лицензию сантехника или электрика.
Сейчас специально поискал на Линкедин Junior Frontend вакансии. Образование просят далеко не везде, даже в США и особенно в Коммифорнии.
Сантехники или электрики учатся меньше по времени, но я имел в виду то что им нужно проходить сертификацию и получать лицензии на каждый вид работ.
Ну как юзкейс, например, создание нового UI элемента в приложении где уже используется Реакт, или нужно поднять бложик на Next.js.
Хокку — вот сложность. А "Война и мир" — обычная ремесленная разработка.
Программирование — это сложноОпасное заблуждение. Так можно прийти к выводу, что если ты программист — ты очень умный.
В школе я тоже думал, что я очень умный. Из-за чего расслабился и не прилагал серьезных усилий к обучению, как минимум в начальных и средних классах. Гораздо позднее я осознал, что это не я умный, это одноклассники дураки, и что сама школьная программа спроектирована таким образом, чтобы учить не слишком умного ребенка. Что привело, по сути, к безвозвратной потере нескольких лет — сейчас учиться гораздо сложнее, как из-за более старшего возраста (в меньшей степени), так и из-за того, что нужно зарабатывать себе на жизнь (в большей степени). Если какой-то школьник сейчас читает этот коммент — не повторяй моих ошибок, не ставь для себя слишком низкую планку.
Программирование — это просто. Это чистая логика, и ничего, кроме логики. Любую, даже самую сложную область в программировании можно раскрутить до последовательности простейших логических шагов. Какая еще область деятельности человечества может быть проще?
Другое дело, что люди путают «сложно» с «долго». Программирование — это долго. Нужно годами учиться и практиковаться. Но ничего «сложного» в этом нет.
Программирование — это просто. Это чистая логика, и ничего, кроме логики. Любую, даже самую сложную область в программировании можно раскрутить до последовательности простейших логических шагов.Точно так же, как хирургия — это просто копание внутри другого человека, ага. Любая операция, даже самая сложная, может быть раскручена в набор элементарных движений. Ничего сложного, но долго учиться.
Нет, это не так работает. Ваше описание подходит, в общем-то, под любую деятельность, особенно творческую, но что-то я не вижу писателей-художников-композиторов в таких же количествах, как «я умею гуглить syntax error: missing semicolon, я программист!».
Точно так же, как хирургия — это просто копание внутри другого человека, ага.Дайте хирургу настолько стерильную среду, насколько она существует в программировании — и мы увидим настоящий рассвет хирургии. Пересадка голосы будет считаться рядовой операцией. Протестил на стейдже — накатил в прод. Умер пациент — откатил смерть, поправил ошибки, выкатил обратно. Повторять до тех пор, пока пациент не уйдет полностью здоровым.
То, на что у хирурга уходит 6-8 лет программист осваивает на 6-8 месяцев… не переставая поворять «уй как всё сложна-то, как непонятно-то».
Это не рассвет? А что это?
Тут речь об аналогичности задачи без знаний о требованиях при пересадке/линковки. Пересадка почки раньше была невозможна без знаний и технологий как и искусственный интеллект, а человек остается просто человеком.
С вами там все в порядке? Может температуру померить? Я тоже, естественно не считаю.Это вы начали говорить о том, что мак появился из ничего, без исходников. Не уверен, что именно мне тут надо мерить температуру :)
Тут речь об аналогичности задачи без знаний о требованиях при пересадке/линковки. Пересадка почки раньше была невозможна без знаний и технологий как и искусственный интеллект, а человек остается просто человеком.Аналогичности тут нет никакой. Пересадка головы — это замена устройства на аналогичное с тем же интерфейсом. То, о чем говорите вы — это как смешать днк человека и черепахи так, чтобы создать новый вид — человека с панцирем.
Это вы начали говорить о том, что мак появился из ничего, без исходниковя ничего такого не говорил а лишь утверждал, что сложность решения проблем без описания объектов сравнима.
Да, человек создан Богом, но у нас есть описание работы почек, например, оно получено как и физические законы — путем исследования. Про душу я также ни чего не писал. Так что вы увидели то, чего я не писал.
Не то чтобы я хотел показаться вот прямо очень умным, но к сожалению в логику умеют далеко не все. Ну или как минимум куча народу не умеют это на нужном для программирования уровне.О том и речь была в моем комменте. Если много людей не умеют в логику — это не означает что логика сложна, это означает лишь что много людей не слишком умны (на всякий случай — это не попытка оскорбления не-программистов, гуманитарные штуки только снаружи выглядят донельзя простыми).
Упрощая на примере, написать компилятор куда сложнее, чем написать сайт. Но если сидеть гордым оттого, что можешь написать сайт (чего не может сделать подавляющее большинство людей на планете), то до написания компилятора ты никогда уже не доберешься.
Или там работа на конвейре.Я пробовал. Не рекомендую.
По моему невозможно стать танцором без чувства ритма или музыкантом без слуха.
То что петь и танцевать может почти каждый, вовсе не означает, что каждый любой случайный человек поёт и танцует настолько хорошо, что ему за пение и танцы согласны платить хорошие деньги.С одной стороны да, а с другой — даже большинство композиторов (не певцов даже и музыкантов, но композиторов) как-то обходятся без абсолютного слуха.
Физиологические ограничения закрывают дорогу небольшой части населения (если вы просто вот совсем глухой — певцом вам не стать), но это реально очень небольшой процент.
Программирование — это просто. Это чистая логика, и ничего, кроме логики. Любую, даже самую сложную область в программировании можно раскрутить до последовательности простейших логических шагов. Какая еще область деятельности человечества может быть проще?
Другое дело, что люди путают «сложно» с «долго». Программирование — это долго. Нужно годами учиться и практиковаться. Но ничего «сложного» в этом нет.
Семантика слова "простой", грубо говоря, не подразумевает большой внутренней структуры объекта. Если систему нужно долго раскручивать до простых шагов, она не простая, а сложная. Даже в словаре "простой" определяется фразой "не требующий много времени для понимания". Поэтому "долго" всё-таки имеет некую связь со "сложно".
Простой — доступный и не требующий много времени и усилий для понимания, решения, выполнения, описания, использования
Сама возможность долгого "раскручивания" делает программирование сложным, чуть ли не по определению.
Для некоторых же это просто, потому что по большому счету не требует каких-то экстраординарных знаний и инструментов. При этом эти люди наверняка понимают что выращивать картошку профессионально — это такая же по сути наука, как и программирование — тут и опыт пригодится, и владение специальным инструментом и определенный склад характера.
цитата из словаряlesswrong.ru/w/Споры_об_определениях
Под простотой программирования я имею ввиду малое количество информации, которое требуется для того, чтобы описать его. Программирование основано на логике, а значит, зная некоторый минимальный набор фактов, можно остальное вывести самостоятельно, если на это будет желание. Нет противоречий и внутренней сложности.
Возьмите что-то более гуманитарное, для примера, экономику. Количество данных для составления правильной модели мира требуется колоссальное. Всё со всем взаимодействует, огромное количество необъективных факторов на всех уровнях, вроде жадности и страха. Всё настолько плохо, что многие люди всерьез верят в сильную гипотезу эффективного рынка.
Программирование основано на логике, а значит, зная некоторый минимальный набор фактов, можно остальное вывести самостоятельно
Осталось за малым — научить людей логике и абстракциям. А это и есть самое сложное в программировании.
Даже в словаре «простой» определяется фразой «не требующий много времени для понимания».Всё зависит от контекста. Вот простая задача, которой сегодня, сейчас, ещё многие зарабатывают на жизнь: взять чашку и положить в посудомойку.
Просто, да? Но сколько лет уходит на освоение этой задачи человеком? Если начать с рождения, фиг с ним с зачатием и внутриутробным развитием?
Новорожденный человечек вот нифига эту задачу не решит и даже ребёнок нескольких лет от роду часто решает с получением звона и осколков.
Сама возможность долгого «раскручивания» делает программирование сложным, чуть ли не по определению.При таком определении у вас вообще никаких задач не останется.
Даже очень маленькие дети способны переместить кубик (кружечку) из точки А в точку Б.Кубик способны, чашку нет. Научиться общаться с хрупкими предметами типа тарелок и чашек — требует вполне себе ненулевого обучения.
Причём до того, как вы до этого дойдёте там будет куча промежуточных достижений типа построения башни из кубиков.
Которые будут много раз падать и разваливаьться.
А вот научить обезьян программировать пока ещё вроде бы никому не удалось.Там физиологические ограничения. Языку глухонемых обезьян обучали, обычным языкам — не получается. Другое строение гортани. А без этого до программирования тяжело добораться.
И вторая проблема: у обезьян гораздо короче период, когда их вообще чему-бы-то-ни-было можно обучить.
Детёныши обезьян учатся почти с той же скоростью, что и детёныши людей, но достаточно быстро их внимание переключается на самцов/самок и поддержание статуса в стае… на «глупости» типа изучения математики/программирования внимание уже не выделяется.
Кстати у человеков же плюс-минус та же «проблема».
С чего вы решили что у разных людей не может быть различных «физиологических ограничений»?Пожимает плечами. Пока их не нашли. Как найдут — можно будет что-то оценивать.
То есть по вашему немые люди не могут научиться программированию?Вы читать когда-нибудь научитесь? Немые люди не могут научиться говорить. Серьёзно. Причём тут программирование?
Я бы сказал что там проблема совсем в другом.Дело во многом в этом. Были эксперименты, когда детёнышей обезьян помещали в человеческую семью. Примерно до 3-5 лет они развивались примерно как и человеческие дети, но где-то в этом возрасте тип поведения резко менялся и они становились, фактически, необучаемы.
Соответственно программировать они могут примерно вот на этом же уровне.
И точно так же у разных людей вполне себе могут быть очень разные когнитивные способности. И если взять ту же рекурсию, то для кого-то это элементарно, для кого-то сложно, а для кого-то может вообще непонятно в принципе. И с абстракциями у отдельных людей бывают серьёзные проблемы. И так далее и тому подобное.Это всё понятно. И понятно, что есть вершины, куда не все люди могут добраться (скажем далеко не все математики могут разобраться в доказаьтельствах теоремы Ферма или гипотезы Пуанкаре).
Но этот уровень (доступный «не только лишь всем») находится весьма высоко.
Базованые навыки программирования (как и базовая высшая математика) доступны 90%-99% населения.
Было бы желание.
В смысле не нашли? Не нашли физиологических или когнитивынх различий у разных людей?Не нашли достаточных отличий, которые бы могли повлиять на обучаемость программированию.
Вы это сейчас серъёзно?Ну, могу признать, что вы — редкое исключение.
Я написал что обезьян не могут научить программировать. Вы написали что это связано с их устройством гортани.Вообще-то там были названы две причины, а не одна. И строение гортани просто «закрывает» путь через обычную речь. А вторая проблема — окончательно всё закрывает.
Немых тоже не могут научить говорить. Следует ли из этого что их тоже нельзя научить программировать?Нет. Из этого следует, что научить их программировать сложнее. И статистика это подтвержает. Глухих в мире довольно много — порядка 5%. А вот среди программистов их — единицы.
Дискалькулия та же например. Встречается у ± 5% населения. И это один из ярких примеров.Вот только вопрос: а это яркие примеры чего?
Вот все эти многочисленные расстройства, СДВГ, которых раньше не было, внезапно массово возникшие в последние десятилетия — это проблемы физиологические? Или организационные? Не появились ли они в силу отказа от важного инструмента обучения под названием «ремень»?
Но это совсем не означает что это что-то новое.Новизна — не в существовании, а в массовости. Пока вот вот это всё воспринималось как повод к применению ремня — так расстройств (любых: гендерных, дискалькулии и прочего) было очень мало.
А как провозгласили «детей надо развивать равномерно «на 360 градусов», чтобы те были непременно счастливыми» — так и появились многочисленные растройства.
Их можно использовать для того, чтобы манкировать учёбой, говорить о том, что ты «не такой как все» и требовать «особого отношения».
А какой там процент физиологии — вопрос открытый.
Пока вот вот это всё воспринималось как повод к применению ремня — так расстройств (любых: гендерных, дискалькулии и прочего) было очень мало.
Гендерные — это вы про гомосексуалов? Так я вас разочарую — и во времена Пушкина их хватало. Просто в некоторых социумах это дело пряталось. Ну просто жить хотелось. В такой ситуации в принципе можно или делать потребное в тайне или сублимировать (но в те времена и с сублимацией были проблемы).
А расстройства были и есть. Я вот и по себе могу сказать — у меня аппарат речи "внешнее решение". Если я чем-то занят — даже слыша речь я могу её не распознавать. Сработают флаги — парсер запустится и попытается вытащить из кэша и разборать… но может и не помочь — придётся переспрашивать. При этом с письменной речью проблем существенно меньше (описки и опечатки — конечно же бывают).
Если я чем-то занят — даже слыша речь я могу её не распознавать.Это типа расстройство? По-моему, это нормальное свойство сосредоточения.
Нормально — не воспринимать. А я ещё слышу (т.е. воспринимаю), но на "парсер" она не заводится, если не пойдёт флаговое значение… Но такое состояние — это когда устал. В обычное время всё-таки или не воспринимаю или слышу фоном.
Просто, чтобы было понятно — думал о чём-то, при этом слышал речь, но не воспринимал, вдруг резко потребовалось понять — трачу секунду-три, из кэша вытягивается всё что есть и в "парсер" идёт. Проблема в том, что парсер на битых данных работает откровенно хреново, а в кэше инфа быстро протухает, восстанавливается максимум последние секунд 5 "записи". Собственно проблема ровно в том, что я ощущаю это как длительный процесс(ещё и имеющий внутренние статусы) и парсер тяжело справляется с битыми данными.
По-любому отклонение… только помимо отрицательного ("парсер" отключается, слабо справляется с шумами) есть и положительное (есть какой-никакой, но кэш, из которого парсер может последние данные взять… это же может происходит и при обычном диалоге, если чего-то с ходу не понял — парсер может пытаться несколько раз пройтись по одной и той же информации, в части случаев даже справляется с восстановлением информации).
Дискалькулия та же например.
Дискалькулия, к слову, является функциональным нарушением мозга.
Вот, согласно опредению с Вики:
За эту функцию в мозге отвечает внутритеменная борозда теменной доли. У людей, страдающих таким недугом, данный участок мозга меньше, чем у здоровых людей, и недостаточно активен.
Странно функциональные нарушения мозга включать как фактор обучаемости программированию. Это не некое «ограничение», это заболевание.
В общем смысле речь идет о здоровых людях же (в рамках когнетивных способностей).
Но простота не означает легкость. Копать картошку лопатой тоже просто, но кто скажет, что это легко?
Но простота не означает легкость
Приведите, пожалуйста, антонимы к словам "легко" и "просто". Я, кроме "сложно", ничего придумать не могу. Вы тут про простоту логики уже несколько раз утверждали… Если 2 штуки являются отрицаниями одного и того же, то разве не получается, что эти штуки равны?
просто-сложно
Ну просто тут спор об определениях. Для меня нет разницы между "легко" и "просто" (в контексте действия). Оба термина означают, что для выполнения действия не требуется много энергии, сил и специальных навыков.
Пример: поднять рычагом коробку с котиком внутри и трёхметровое бревно одинаково просто (потому что принцип ну абсолютно такой же простой, easy; антоним — сложный), но коробку при этом поднять ещё и легко (легко — лёгкий, light; антоним — тяжёлый).
А ещё может быть так, что какая-то операция будет простой, но не лёгкой, либо лёгкой, но не простой.
В итоге (в моей схеме) программировать не просто (потому что нужно понимать довольно сложные принципы), но легко (буквально тыкать пальцем в клавиатуру и/или мышь).
Я вам по секрету скажу — веке в 15 — лопата это тоже было сложный объект… Тут тоже целая промышленная цепочка с получением металла нужного качества (потому что копать деревянной лопатой… ну вы понимаете… а это единственная вменяемая альтернатива хорошему металлу, который по историческим меркам стал доступен весьма недавно… потому что даже лопата из бронзы — либо по ТТХ, либо по цене будет многократно уступать деревянной лопате).
15 век вроде уже следующая эпоха. Могу ошибаться, но я говорю про времена, когда начали активно пользоваться плохоньким, но железом. Такое железо на лопату пустить было нельзя (дорого и не справится — или погнётся или получится меч/топор/молот по соотношению толщина-ширина). Если это был не 15 век — прошу прощения за ошибку.
Однако, математика вроде как не считается простой, и никто не говорит, что научиться ей на уровне хотя бы физмат-школы может любой.Я говорю. Не любой, но 90-95% могут точно. Вопрос мотивации исключительно. Не каких-то там сложных особых свойств мозга. Только некоторое количество органических повреждений не дают возможности этим заняться.
Я как раз поступил в физмат-школу легко без репититоров и без усилий со стороны родителей. Но просто нравился мне Гарднер, Перельман и вот это вот всё.
Возьмите любого «гуманитария» и заставьте его заниматься математикой по 4-5 часов день — и будет вам математик.
Почти все люди, которых я знаю и которые «не умеют» в математику просто «не хотят» в математику, на самом деле. Им так проще жить.
Возьмите такого необучаемого и заснимите 500 часов того, как он пытается разобраться в соотвествующих задачах.
И вы обнаружите одно из двух:
1. Либо там будет изображение бурной деятельности.
2. Либо, что более вероятно, никаких 500 часов занятий вы вообще не увидите.
Ну не видел я ни одного человека, который бы всерьёз занимался чем угодно 500 часов — и «не осилил».
Сумуляторов бурной деятельности видел много, это да.
Собственно основное, что делает репетитор — это не даёт вам делать вид, что вы «учите матан» или там «учитие программирование» в то время как вы в это время «чатитесь по WhatsApp» (или, в давние времена, «рисуете рожицы на полях тетради»).
Всё остальное — на порядок менее важный фактор.
Почему «нефальсифицируемые»? Очень даже фальсифицируемые.
Возьмите такого необучаемого и заснимите 500 часов того, как он пытается разобраться в соотвествующих задачах.
И вы обнаружите одно из двух:
- Либо там будет изображение бурной деятельности.
- Либо, что более вероятно, никаких 500 часов занятий вы вообще не увидите.
Чтобы доказать фальсифицируемость какого-либо утверждения нужно описать эксперимент, возможным результатом которого было бы опровержение этого утверждения. Вы же пытаетесь вместо этого подсунуть эксперимент который может только подтвердить ваше утверждение.
Вы же пытаетесь вместо этого подсунуть эксперимент который может только подтвердить ваше утверждение.Как раз наоборот.
Покажие видео человека, который честно, не отвлекаясь, решает задачи по матану часов так 500 — и при этом его «ниасилил».
Я даже намёков на это не видел: везде где мне говорили, что вот этот конкретный человек «чистый гуманитарий» я никогда попыток честно порешать задачки не видел. Зато видел массу способов избежать траты сил не «ненужные задачки».
Максимум что наблюдал — не попыку прорешать все задачи, которые удалось ранее у кого-то списать, по порядку — а попытку прорешать задачки где-нибудь из середины учебника, не прорешав всё что было до того.
Как раз наоборот.
Ну раз наоборот, то вот предложенный вами эксперемент:
Почему «нефальсифицируемые»? Очень даже фальсифицируемые.
Возьмите такого необучаемого и заснимите 500 часов того, как он пытается разобраться в соотвествующих задачах.
И вы обнаружите одно из двух:
- Либо там будет изображение бурной деятельности.
- Либо, что более вероятно, никаких 500 часов занятий вы вообще не увидите.
Какой из исходов такого эксперемента опровергает ваше утверждение?
Какой из исходов такого эксперемента опровергает ваше утверждение?Никакой, потому как варианта «человек честно самостоятельно решал все задачи из всех разделов по порядку — и всё равно нифига не понял» (которое опровергло бы моё утверждение) я ни разу не видел.
Хотя вот тут есть нечто похожее, сейчас пытаемся разобраться.
И снова про теорвер (с которыми в России у многих, в принципе, плохо). Что, вообще, очень интересно: может быть для теорвера нужен, действительно, особый склад ума? С обычным матаном я такого вообще никогда не наблюдал.
Никакой, потому как варианта «человек честно самостоятельно решал все задачи из всех разделов по порядку — и всё равно нифига не понял» (которое опровергло бы моё утверждение) я ни разу не видел.
Ну об этом и речь. Вы сформулировали нефальсифицируемую гипотезу и пытаетесь её доказать. Не надо так.
Еще раз, вот цитата:
Возьмите такого необучаемого и заснимите 500 часов того, как он пытается разобраться в соотвествующих задачах.
И вы обнаружите одно из двух:
- Либо там будет изображение бурной деятельности.
- Либо, что более вероятно, никаких 500 часов занятий вы вообще не увидите.
Эксперимент сформулирован так, что он в принципе не способен дать исход
когда здоровый разумом человек тратит Х времени на что-то, в данном случае, на математику, и не может её понять
Вот если убрать из него ограничение на возможные исходы, тогда предложенный вами исход станет возможным.
Есть гипотеза. Чтобы доказать фальсифицируемость не нужно проводить эксперимент, нужно лишь привести описание эксперимента один из возможных исходов которого опровергнет эту гипотезу. В приведенном эксперименте есть только 2 возможных исхода. Ни один из них не опровергает гипотезу. Т.е. такой эксперимент не приведен.
Проблема в том, что исходы опровергающие гипотезу отрицаются еще на этапе формулировки эксперимента. Это ведь аналог чайника Рассела. Там тоже постулируется, что любой эксперимент могущий обнаружить этот чайник не обнаружит его.
Это так же, как с бухгалтерией: будете показывать им как менять картридж 100 раз — ничему не научатся, будут всё так же и через 10 лет голосить, когда тонер кончится. «Поставите заявку в очередь на исполнение через 3 дня» — научатся с первого показа.
Мотивация — самое главное в обучении. А не какие-то там «способности» и «склонности».
И «десятый раз» это точное число? То есть как быть с ситуациями когда человек делает одни и те же ошибки в десятый раз, а потом всё равно добивается успеха?Поняно, что если у вас найдутся средства проведения эксперимента, то нужно будет зафиксировать точные критерии. Но в моей практике я ничего не видел даже близко похожего, потому где лежит граница — не скажу.
Ок. Допустим такого не происходит и человек всё равно не выучил. Это уже опровергнет вашу теорию или есть другие факторы?Да. Если человек честно учится и ни черта так и не выучил — опровернет.
Вообще, если вдуматься, то вы поймёте, что процесс обучения (чему угодно!) — это движение от одних навыков к другим, при котором вы вначале решаете простые задачи (с ошибками!), потом научаетесь их избегать — и переходите к более сложным. И всё. Ничего более.
И есть ровно две причины, по которой вы можете чего-то «не осилить»: вы не учитесь (то есть решая задачи «одного уровня» не научаетесь избегать ошибок), либо пытаетесь «перепрыгнуть через ступеньку» (и делаете не те ошибки, которые ожидались на этом уровне, а совсем другие, которые вы должны были научиться избегать раньше).
И совершенно неважно — учите вы матан, программирование или там, резьбу по дереву.
И вот знаете — я не видел такого, чтобы человек честно пытался выучить какие-то простые вещи типа матана или программирования — и не мог. Как правило «халтура» настолько бросается в глаза, что вопроса о том, что это халтура — просто не возникает.
И на мой взгляд он один сам по себе уже разбивает в пух и прах вашу теорию о том что мотивация это главное и остальное неважно.Важна ещё обучаемость чему угодно, в принципе.
Я вот недавно смотрел передачу про ребёнка с синдромом Дауна, который очень хотел научиться играть на скрипке.А что — есть какие-то вещи, которые люди с синдромом Дауна осваивают легко? Какие?
Речь же у нас тут идёт не об органических поражениях мозга (с ними-то всё понятно, но они не так часто, на самом деле, встречаются), а о пресловутой «гуманитарной одарённости». Когда человек — вроде как умён, интеллектуал — а в математику или там программирование «не может».
А вот тут как раз возникают вопросы — не может или не хочет?
А если у вас нейросеть в мозгу физически испорчена, тогда да, тут всё понятно. Если обучаемости нет — так её таки нет.
Не говоря уже про огромные кучи людей, которые пытаются чего-то добиться, но так и не добиваются несмотря на все свои усилия. В том же спорте например.Не видел таких. Опять-таки если органических повреждений нет.
Уровня разрядника может достичь почти каждый, хотя, конечно, рекорсменом дано быть не каждому. В программировании или изучении матана — всё так же.
И опять начинается… Что значит «честно учится»? Как вы собираетесь это проверять?Вот именно смотря на решения задач одного и того же вида с разными интервалами.
То есть есть люди, которые плохо обучаемы.Вот это да — наблюдается. Но редко.
Есть люди у которых нет или слабые способности к письму, чтению, математике, абстрактному мышлению и т.д. и т.п.Вот только в большинстве случаев речь идёт не о каких-то мифических «способностях» (ну где у человека ген «способности к письму»?), а просто к тому, что чем-то (тем что человеку нравится) занимаются больше, чем-то (тем, что не нравится и что можно объявить «неважным») — меньше.
Или по вашему все люди, которые занимались спортом, но не стали профессионалами на самом деле просто не хотели ими стать?В случае со спортом есть проблема: уметь тягать штангу или там бегать на разряд недостаточно, чтобы стать профи. Деньги платят только тем, кто сильно выше среднего результаты показывает.
И с музыкантами та же история: вакансий (даже в барах и ресторанах) — сильно меньше, чем желающих их заполнить.
Сколько простоых разрядников могут зарабатывать себе на жизнь спортом? Вот и в программировании точно так же.Вы это сейчас всерьёз? Умея просто «клепать формочки» (а это даже не уровень разрядника) вы не сможете заработать больше, чем курьер или уборщица?
О каком точно так же вы говорите? В спорте деньги платят только мизерному проценту самых-самых.
А вакансий программистов в мире — буквально миллионы.
В этом разница, а не в том, что спорт требует каких-то суперспособностей.
Не откуда-то, а из-за завышенных ожиданий. Вот тут отлично написано: научи куда тут нажимать чтоб как пограмист бабки загребать.А вакансий программистов в мире — буквально миллионы.А население миллиарды. При этом всё равно откуда-то нехватка программистов.
Почему-то тот факт, что на краснодеревщика нужно учиться несколько лет — не приводит вас к выводу, что строгать — это очень сложно.
А тот факт, что программиста нельзя научить за пару недель — приводит.
Подводит видимая простота: ну сложно, что ли, научиться тыкать кнопки? Даже ящика с десятком стаместок не нужно.
На самом деле программировать — не так и сложно, но очень велика разница между кажимой сложностью и реальной.
Кажется, что это что-то, что должно осваиваться за день или, там, пару недель… а на практике — те же 2-3 года, что и любая «серьёзная» профессия.
То есть если всё так как вы описываете, то грубо говоря давно уже все уборщицы и курьеры должны бы были себя хотя бы попробовать в айти.Так они пробуют. Когда понимают, что через неделю они на сто тыщ устроиться не могут — бросают.
Сколько я таких «немогущих» видел.
И я уверен что большинство этих людей вполне себе готовы пожертвовать 2-3 годами жизни если это даст им айтишные зарплаты на всю оставшуюся жизнь.А откуда эта уверенность? Я как раз такого не наблюдал.
Большинство виденных мною «немогущих» даже пару недель на курсы Английского походить не могут, чтобы зарплату повысить сразу, причём заметно.
А вы хотите, чтобы они 2-3 года обучались.
В том-то и дело, что для большинства градации примерно такие:
- День обучения — просто.
- Месяц обучения — сложно.
- Год обучений — ну уж нет, школу я давно закончил.
Вот и всё. В этих терминах не только программирование, но любая почти профессия — это дико сложно.
Но у программирования есть особенность: тут не нужны подмастерья.
Краснодеревщик может куда-то приспособить даже человека, который рубанок никогда в руках не держал. А потом, постепенно, обучить.
А эникейщик программисту — увы, не помощник. И обучить его он не сможет.
Они вообще на разных языках говорят.
То есть либо не идут, либо не справляются.Зачастую даже вводный бесплатный курс не проходят. Потому как несколько месяцев обучения — неприемлемо.
Потому что многие из них тратят 2-3 года своей жизни чтобы получить другие, гораздо менее денежные профессии.Какие? Примеры можно?
И вот те самые, которые сначала пробуют учится на айтишника, не справляются, а потом успешно овладевают другой, менее денежной профессией, на мой взгляд разрушают всё ваше логическое построение.Не факт. Ещё раз: 2-3 месяца — это оч. сложно. Предел.
Да, потом можно доучиться, вышку даже получить, но… 2-3 месяца — и ты должен получить деньги. Такое требование у большинства меняющих специальность.
Вначале — курсы бухгалтерии какие-нибудь, а уже потом — вышка. Скорее всего заочно. Параллельно с работой.
Большинство виденных мною «немогущих» имеют за плечами как минимум ПТУ/Техникум, а то и ВО в другой отрасли.Правильно. Они уже «отучились» и тратить 2-3 года на переобучние не будут.
И это как раз те самые подмастерья и есть.От них, зачастую, требуют умений, которые на 2-месячных курсах очень сложно получить.
информатику и потом ушли в гуманитарные профессии(например социальные работник и учитель)И это вот социальному работнику или учителю нужно 2-3 года обучения?
Нет, чтобы стать каким-нибудь «учителем года» может и 10 лет мало быть, но просто устроиться на работу — можно вообще без обучения. Сам когда-то подрабатывал.
админами или техниками по коммуникациямиТо же самое: две недели обучения и вперёд — провода тянуть.
Чтобы переучится на айтишника почему-то не будут, а чтобы переучится на что-то другое почему-то тратят. Где логика?Логика — в отсутстсвии умения планировать и нежелании выкладываться. Ну не хотят люди работать и учиться по другой специальности одновременно.
Максимум — два-три месяца и то это редкость. Большинство не может скопить денег, чтобы выделить на учёбу больше недели-двух.
Я не знаю что вы понимаете под словом «подмастерье». Но подмастерьем за 2-3 месяца тоже обычно не станешь.Я имею в виду «во время обучения выплачивается стипендия». Не 2-3 месяца до того, как ты получишь диплом, а 2-3 месяца (а лучше — 2-3 недели) до того, как ты начнёшь «деньги в семью» приносить.
Ещё раз: почему по вашей логике люди при прочих равных не готовы переучиваться на айтишника, но при этом переучиваются на другую, менее денежную профессию?
Вы не заметили, что уже десяток комментариев беседуете с продуктом тренинга Успешного Успеха.
«Просто ленивые алкаши не хотят трудиться, вот они и бедные, то ли дело я, Эффективный Успешный Сэлфмейд».
И я подозреваю, что отнюдь не у каждого хватит координации и глазомера стать краснодревщиком, то есть таким мастером по резьбе по дереву, который не испортит дорогостоящее красное древо неловким движением.Главное, что между человеком, который ни разу не держал в руках рубанок, и краснодеревщиком есть много ступеней, которые позволяют уже зарабатывать какую-то копеечку.
А в программировании — есть довольно высокая планка, ниже которой ты вообще никакую работу не найдёшь.
У врачей или лётчиков, впрочем, тоже, программист тут не уникальная профессия.
А в программировании — есть довольно высокая планка, ниже которой ты вообще никакую работу не найдёшь.
Глядя на некоторых программистов, вполне зарабатывающих какую-то денежку, вынужден с вами не согласиться.
У врачей или лётчиков, впрочем, тоже, программист тут не уникальная профессия.
У врачей так же, как у программистов, т.е. планка на практике не такая уж и высокая, как задумывалось теми, кто создавал систему обучения врачей.
Насчет летчиков не знаю, но наблюдая за представителями других профессий, которые вроде как должны иметь достаточно высокий уровень входа, но уровню этому совершенно не соответствующими, летать самолетами как-то опасаюсь.
ну или он в принципе необучаем, но таких мало
При этом вы же утверждаете, что обучить можно всех. Так всех или не всех?
Не любой, но 90-95% могут точно. Вопрос мотивации исключительно. Не каких-то там сложных особых свойств мозга. Только некоторое количество органических повреждений не дают возможности этим заняться.
Вопрос «даунов», людей, у которых удалили (по медицинским показаниям) одно полушарие и прочее — были вынесены за скобки изначально.
Если верить табличке отсюда: https://www.iqcomparisonsite.com/occupations.aspx, то что-то не даёт заняться программированием как минимум четверти здоровых людей (IQ в диапазоне 70-90).
И как в рамках этого эксперимента предлагается отличать «настоящую бурную деятельность» от «изображения бурной деятельности»?Вы от меня точную методологию хотите узнать, или пытаетесь намекнуть на то, что это невозможно?
Учителя же как-то отличают, кто сам работу написал, а кто списал. Кто учится, а кто бездельничает.
И приводит к субьективности оценок. Что в случае с научным экспериментом на мой взгляд не особо то и допустимо.Скажите это научным статьям по психологии.
Я намекаю что это даже формально не определено.Четкое формальное определение будет при попытке постановки эксперимента. Какой смысл в рамках дискуссии на хабре докапываться до точной формальной формулировки? Готов поспорить, что дальше слов это всё равно никуда не уйдет.
Я на 99% уверен, что часть людей в эксперименте через некоторое время откажутся от участия в нём (или начнут делать вид, что занимаются, если участие в эксперименте будет оплачиваться). После этого начнётся спор о причинах, и каждый останется при своём.
А эксперимент, где выход из него не позволен и мотивация обеспечивается более сильными средствами чем деньги, не дадут провести по этическим соображениям.
как раз к тому времени понял, что с других ветвей математики меня прёт большеНу вот это вот — собственно, ключевое.
Обучение — штука, на самом деле, не такая сложная. Нужно просто изучать вещи, которых вы не можете сделать легко, но которые недостаточно сложны, чтобы вы вообще не смогли их сделать.
Как говорится, ну не кликает у меня теорвер.Очень странно если всё так, как вы говорите. Точно «не кликает»? Вернитесь мысленно к тому времени, когда его изучали — вы пытались «продраться», через вещи, которые вы не понимаете? Или, наоборот, конценрировались на том, чтобы поставить самому себе как можно больше «ментальных плюсиков» с лёгкостью решая простые задачи?
Я бы оценил разницу в КПД этак на порядок.В календарном времени — возможно. Но я когда разбирался с людьми, у которых что-то «не идёт» (немного когда-то подрабатывал репетитором), то в 10 случаях из 10 всё упиралось в то, что в тех областях, где человека «прёт» — он берётся за всё более сложные задачи, а там где не прёт — либо сидит «в зоне комфорта», в 100500й раз решая те задачи, которые уже научился решать, либо пытается «перепрыгнуть» через 10 тем, «чтобы всё побыстрнее закончилось».
В обоих случаях КПД страдает заметно.
P.S. И да, мне тоже, разумеется, не все вещи даются одинаково легко — но я чётко понимаю, что проблема не в том, что это сложные вещи, а в том, что я просто не могу как следует заставить себя этим заняться. Ну там, например, немецкий выучить (по работе было бы неплохо) — уже который год. Но немцы же его почти все выучивают! А потому что им он нужнее, чем мне…
И я однозначно потратил больше 500 часов прежде чем понял что не тяну.Не тяните… что конкретно? И в математике и в любой профессии вообще есть уровень, выше которого может подняться не каждый.
С теорвером у очень многих сложности возникают, к примеру. Не уверен, что это — вот именно то, что уже превосходит возможности «типичного home sapiens'а», но возможно.
Но вот с базовым, простейшим, матаном (а другого для программирования не нужно) — я не видел проблем.
Вы утверждали что если чем-то «заниматься всерьёз», то это можно ослилить.Мне надоело спорить с тараканами у вас в голове. Давайте я процитирую что я написал:
Ну не видел я ни одного человека, который бы всерьёз занимался чем угодно 500 часов — и «не осилил».
Вы вообще в курсе что «видел человека» и «слышал о человеке» — это разные понятия?
Вас я тоже, в общем, не видел, но готов признать что вы — уникум, способный угробить кучу времени и ничему не научиться.
Ваши комментарии под другими статьями это тоже подтверждают.
Ну Ok, какое-то количество таких уникумов, похоже существует. Но вряд ли их много, иначе хоть одного я бы увидел лично.
заставьте его заниматься математикой
Но он будет яростно сопротивляться, если ему хочется заниматься не математикой, а чем-нибудь другим.
Если же ему уже ничего не хочется, и нет сил даже на то, чтобы сопротивляться тем, кто заставляет его против его желания заниматься математикой, то сил на саму математику у него уж точно не останется. Он ляжет и будет лежать )
Но он будет яростно сопротивляться, если ему хочется заниматься не математикой, а чем-нибудь другим.Для этого есть масса разных решений. Начиная от обещания разных плюшек, до банальных розог.
Вопрос целесообразности пременения всего этого арсенала — это уже второй вопрос.
Основная причина того, что в обществе есть куча людей «неспособных к математике» или «не умеющих отличать тона» — в том, что это не стыдно.
Среди вьетнамцев, например, людей, не «умеющих отличать тона» — на порядок меньше, чем среди европейцев… думаете у них мозги другие? Нет, у них язык другой.
в том, что это не стыдно
Ну, не знаю… кажется у вас слово «стыдно» помещено примерно в тот контекст, в котором сейчас, в просвещенном 21-м веке можно сказать «стыдно не знать азбуки», или там, «стыдно не уметь считать хотя бы до десяти». Вроде, и не поспоришь. А вроде, всего лет 100 назад, что по историческим меркам немного, большинство крестьянского населения не владели грамотой, и среди них не считалось, что это стыдно. Времена изменились стремительно, и, действительно, уже через 20 лет стало «стыдно быть неграмотным». Но, продолжая аналогию до настоящего времени, сейчас сказать первому встречному «стыдно не знать хотя бы три первых нормальных формы реляционной алгебры» я никак не смогу, потому что это будет явный перебор. Может быть, лет через 20 это будет уже по-другому, не знаю.
Времена изменились стремительно, и, действительно, уже через 20 лет стало «стыдно быть неграмотным».Вот только времена-то не сами по себе изменились. Была целенаправленная пропаганда, были программы ликвидации неграмотности и прочее.
Но, продолжая аналогию до настоящего времени, сейчас сказать первому встречному «стыдно не знать хотя бы три первых нормальных формы реляционной алгебры» я никак не смогу, потому что это будет явный перебор. Может быть, лет через 20 это будет уже по-другому, не знаю.Не будет, конечно. Пока гуманитарно одарённые личности считаются более уважаемыми людьми, чем люди, знающие «три первых нормальных формы реляционной алгебры» — не будет.
Может все они просто не знают о том как все просто, или берут уж совсем-совсем новичков?
Почему-то запуск зонда и его посадка на летящую комету вполне себе работает, хотя там невероятное количество того, что что-то может пойти не так, и у них всего одна попытка. Вы ведь не будете говорить, что какая-то соцсеть будет сложнее миссий наса?
Ответ прост. Фейсбуку просто-напросто пофиг на все эти конфиденциальные данные. Утверждать они могут другое, но приоритет у них явно не в этом. Так же как и с майкрософтом и эпплом.
Вы ведь не будете говорить, что какая-то соцсеть будет сложнее миссий наса?На эту тему спорить можно до бесконечности.
Сами задачи, возникающие при посадке зонда на летящую комету на два, а то и на три порядка проще, чем задачи, возникающие при написании социальной сети.
Однако, как вы верно заметили, в случае с кометой у вас всего одна попытка. Компенсирует ли это сильное упрощение задач? Фиг знает.
Да, атмосфера и Земли и кометы «дышат», да, всякие космические лучи и прочее.
Но вот всё это — это «стрельба по площадям», никто не пытается в программе управления ракеты специально найти «слабое звено». То есть если вы запрограммировали 1000 случаев и один неправильно — у вас вероятность сбоя 0.1%.
А в случае с социальной сетью — всё ровно наоборот: люди специально ищут у вас в коде ошибки и если у вас в одном случае из 1000 проблема — вас, со временем, взломают, с вероятностью, близкой к 100%.
Автору спасибо за статью, некоторые утверждения сильно затронули мой личный опыт, особенно из области «когда остаешься один на один со своим стектрейсом».
Автору спасибо за статью, некоторые утверждения сильно затронули мой личный опыт, особенно из области «когда остаешься один на один со своим стектрейсом».
Присоединяюсь. Золотые слова.
Кстати, бывает такое, что со временем сложность программы начинает перерастать «вычислительные возможности» программиста. Когда осознаёшь, что уже не хватает головы, что бы впихнуть всё. Вот тогда приходится думать «как упростить/как разрезать на части».
Конечно бывают простые работы. На них нередко можно встретить детей разных "уважаемых людей". В основном, это различные руководящие должности, желательно в большой компании, которая достаточно устойчивая в плане финансов, и в которой ответственность максимально размыта. В таком случае вся работа заключается в раздаче довольно общих указаний вида "сделать хорошо", или "сделать как у вон тех", а сложная часть останется уже тем, кто будет твои распоряжения реализовывать. Ещё можно просто сидеть вместо мебели в парламенте или совете директоров. Можно найти такое место и где-нибудь в среднем звене, я встречал начальников, которые работали исключительно в режиме ретранслятора, что тоже совершенно не сложно.
Easy to learn, hard to master.
<:o)
Мышкой можно нашлепать форму с достаточно сложным на первый взгляд поведением. Она выбирает файлы, сортирует и фильтрует подгруженные данные, принимает от пользователя запросы и куда-то их направляет. При этом человек не вводит ни одного условного оператора, не пишет ни одного цикла. Просто соединяет предложенные ему кусочки.
Так-то и у меня жена умеет программировать на микроволновке: 2 минуты на одной мощности, 5 минут на другой мощности, потом 10 минут на гриле. Натыкала кнопок и ушла. Получается вкусненько.
Это всё прекрасно ровно до того момента, когда перестает работать. А сервиса по ремонту не существует, так как ты сам же представитель производителя. Начинается диагностика, отладка, замена деталей, ремонт и прочие тонкости микроволновкостроения, которые навсегда изменят взгляд на микроволновки :)
Решение было простым — да, но к нему был долгий путь, так что вообще-то нет.
Что нужно для понимания математики? Да ничего, кроме запоминания. В математике много определений, много формул, много теорем, а к тому ещё промежуточные шаги по выводу формул и теорем. И это всё нужно запомнить. Если не запомнил — досвидания, ты не матетматик.
Поэтому обучение программированию (матетматике, физике, чему-угодно) должно закладывать в память весь этот огромный массив информаци. Не заложило — выходит недоучка, который просто не знает, как делать то, что запомнившие нужное делают легко.
Курсы программирования длительностью в месяц-два не дают никаких шансов на запоминание необходимого объёма информации. Лучшее что в результате будет — какие-то основы, от которых далее ученик сможет отталкиваться при встрече с новыми задачами. Но основы не дадут ему решать большинство задач быстро. А ему же хочется! Поэтому он бежит на SO и тому подобные решения, которые дают ему готовый рецепт. Какие плюсы и минусы у рецепта, ученик, разумеется, не знает. Поэтому и плодится множество убогих и даже просто страшных сайтов, программ и всего прочего. Их делали недоучки (а иногда просто зазнавшиеся недоумки). Но даже недоумка можно обучить и программированию и математике, но на такое обучение уйдёт существенно больше времени.
Если человек готов напрягаться и хотя бы самостоятельно решать предлагаемые задачи, то за год из него можно сделать уверенного миддла. Если человек работает и у него мало свободного для обучение времени, то придётся растянуть удовольствие на пару лет. Если за два года не смог осилить все задачи — скорее всего действительно не стоит заниматься умственным трудом.
Но большинству по силам за год-два осилить программирование до уровня уверенного миддла (с соответствующей зарплатой). Только нужно быть готовым каждый день по часу-два-три (у кого как пойдёт) заниматься по предложенной качественной программе. И очень желательно иметь ещё и качественного преподавателя.
Что нужно для понимания математики? Да ничего, кроме запоминания.
Категорически не согласен! Как раз вызубрить все без понимания практически бесполезно. Может, экзамен даже сдать можно, но математиком от этого не станешь. Для математики нужено математическое мышление. Умение манипулировать абстрактными объектами и конструировать их.
Программирование, это всё же просто, но на том же уровне простоты, что и, например, математика, ядерная физика, rocket science, и т.д.
Мне определённо нравится ваш оптимизм!
Только понятие "просто" и "2 года учёбы" — не слишком сочетаются. Наверно даже, с увеличением затраченного времени "просто" перетекает в "сложно", и к тому времени, когда занятий будет достаточно, значение будет "очень сложно". "Просто" — это то, что можно выучить за 15 минут.
Что нужно для понимания математики? Да ничего, кроме запоминания.Угадайте какие оценки у меня были по истории, стихам и прочему что на запоминание? 2 и 3. А по математике в физмате? При этом помню нелюбимую тему — тригонометрию в школе. Потому что там много формул надо запомнить. Но я запоминал только пару основных, а остальные выводил прямо на контрольной. И успевал. И даже соседний вариант решить. Аналогично по физике — не понимал зачем там половина параграфов, если они выводятся из предыдущего. Еще мне нравится что в физике почти не надо запоминать формулы, часто достаточно примерно. Например знать список влияющих факторов и знать что зависимость от каждого линейна (почти для всех формул) — тогда восстановить формулу просто. Однажды нам дали контрольную по физике с множеством заданий и вариантов и учительница нас покинула. Вход в класс был ссади, и в него подглядывала учительница истории. Благодаря тому что я решал свои задачи, и задачи еще примерно на два варианта и в мою сторону только и летели листочки с просьбами решить ту или иную задачу, я стал получать по истории 3 автоматом, и 4 если что-то говорил (вместо 2 и 3). Кстати аналогично по математике. Во время тригонометрии у нас был такой вид опроса когда всех по очереди спрашивали произвольные формулы, я почти ни разу не отвечал правильно. А когда объяснил как я решаю задания, такую форму опроса вообще отменили (ввели ее только в этом году). Знаете почему меня в университете на практике по матану не вызывали к доске? Потому что я задачу решал в 2 строки, а на просьбу расписать чтобы все поняли — сам не понимал что от меня хотят (ну пару строк еще добавил, но не так как предполагалось). При чем тут вообще запоминание? Там не запоминание, а осознание нужно. И даже 5 минут осознания новой темы и 5 часов практики.
Кстати Фейнман писал про то как его пригласили в Бразилию на год оценить развитие физики в институтах (потому что у них была проблема, и никто не понимал какая). В конце года он сделал доклад, который прочитал в присутствии профессоров и государственных чиновников, а позже сдал его в гос департамент США. Мало кто обрадовался такому докладу. А основной его темой было: «я могу показать вам, почему это не наука, а заучивание во всех случаях, без исключения».
Да даже среди студентов есть ругательные слова «заучка» и «ботаник» которые как раз относятся к тупому запоминанию без достаточного понимания.
Вот поэтому вам и непонятно то, что я написал. Вы ещё ребёнок. Лет через 20 вы, возможно, оцените свои комментарии по другому.
А пока — учитесь как умеете. Вам не встретились хорошие преподаватели, которые поставили бы вам этот навык, а сами вы его не будете развивать по вами же указанным выше причинам (я и так умный, всё понимаю, но только из того, что мне «по фану»). Поэтому вам и потребуется лет 20.
Поэтому и плодится множество убогих и даже просто страшных сайтов, программ и всего прочего. Их делали недоучки (а иногда просто зазнавшиеся недоумки). Но даже недоумка можно обучить и программированию и математике, но на такое обучение уйдёт существенно больше времени.
Если человек готов напрягаться и хотя бы самостоятельно решать предлагаемые задачи, то за год из него можно сделать уверенного миддла. Если человек работает и у него мало свободного для обучение времени, то придётся растянуть удовольствие на пару лет. Если за два года не смог осилить все задачи — скорее всего действительно не стоит заниматься умственным трудом.
Неделю назад работал на олимпиаде по программированию для школьников. Так вот, отдельные школьники, как я заметил, писали программы со сплошным перебором всех вариантов (в т.ч. для обработки матриц): куча похожих строк с использованием if-then-else или огромным блоком case. Понятное дело, хоть такие программы и могут решить задачку, но качество программирования стремится к 0. Спрашиваю — не лучше ли было бы через циклы сделать? Отвечает: так ему удобней, самое главное — ответ правильный получить (правильные ответы давались с заданиями). И как они прошли отбор на олимпиаду?! И какие из них выйдут квалифицированные программисты?!
Какой KPI поставили человекам, такой они и оптимизируют. Что в этом неправильного?
Вижу, что никто не понимает очень простую вещь — без труда не выловишь и рыбку из пруда.
Вы хотите гениальныых решений? Да ради бога, хотеть не вредно. Но сами-то гениальность в чём проявили? Это всё к тому, что меня тут все сношают на тему «да как можно без гениального креатива?!». А я вам всем отвечу просто — гением не становятся лишь от того, что на олимпиадах какой-то креатив смогли выдать. Гением становятся, когда много чего изучают. И слово «много» означает именно то, о чём вы все не подумали. Это реально много часто сухого текста.
Вы все считаете, что без подготовки, на одном прекрасном понимании, вы вдруг совершите чудо? Дак нет же, никакого чуда никто из вас никогда не совершал (признайтесь себе в этом честно). А вот учить много и долго многим из вас приходилось. И вы банально забыли этот процесс. Вы забыли, что пять лет (или больше) убили в ВУЗе на ту самую нелюбимую вами зубрёжку. Вам подсказать, как вы готовились к экзаменам? Вам повторить про количество раз, которое потребовалось вам для запоминания кучи формул? И наконец, вот сейчас, когда вы забыли большую часть зазубренных перед экзаменом формул, ну-ка накреативьте что-нибудь гениальное в той области, формулы из которой вы успешно забыли. Не получается? Но вы же за умные решения, за понимание, и вы же против зубрёжки! И у вас не получается. С чего бы это?
Что бы программирование для вас стало простым, вы должны (обязаны, и других вариантов у вас нет) много-много раз повторять простые действия. Это называется монотонность. И это не называется креативом. И вы, много-много раз повторив мне про вашу креативность, ни разу не вспомнили про ту базу, которую в вас вбили насильно с самых малых детских лет. Ну конечно, ведь все вы вот такие креативные, а тупая зубрёжка — это не для вас. Ну и видеть дальше носа — тоже, очевидно, не для вас. Вот так вот получается, гениальные друзья мои.
Осталось добавить пессимистичных выводов о конечном результате эволюции вида homo sapiens…
правильные ответы давались с заданиями
Если б и проверялось тоже по ним, то с огромным отрывом по памяти и скорости выиграла бы программа printf(правильный_ответ);
:-)
Вообще, такого рода решения допустимы на олимпиадах. Если в задаче не слишком много возможных входных параметров, не слишком большой вывод, и непонятно, как решать задачу быстро, то можно запустить локально тупое решение, сгенерировать все ответы в виде кода, вставить это в исходник и сдать задачу. Это далеко не всегда возможно и считается, что это косяк составителя задачи. Но такие случаи бывали на серъезных олимпиадах.
Серъезно, давать все тесты с ответами? Да еще достаточно маленькие, чтобы участники могли вбить это все руками? Тут однозначно был косяк организаторов.
Ох, сколько же разбитых надежд было у нас на кафедре, когда мои однокурсники поняли, что разработка это сложно. Что если плохо кодить, то на защите курсовой можно повалиться, потому что не сможешь быстро сказать где что происходит.
А если ты покупаешь чужие программы, то ты никогда не сможешь их защитить, потому что их писал такой же оболтус.
Ну а про то, что грамотно писать код и нормально его отладить это надо лить пот, кровь и слезы это вообще отдельная тема.
Будучи юным — сильно увлекался музыкой. До сих пор в кладовке прекрасный Fender Jazz Bass пылится.
Программирование очень похоже на музыку. Есть набор базовых алгоритмов, из них можно получить нечто новое, причем как в виде приложения, так и в виде оригинальных решений в коде. К тому же базовых алгоритмов у нас больше чем 7 нот.
Так что да, вероятно программирование это так же «не для всех» как и музыка.
Программирование — это ни просто, ни сложно. Это просто некоторое количество действий, предназначенных для написания программ.
Есть очень простая часть программирования, не требующая навыков разработки архитектуры и знания какого-либо языка программирования. Это программирование какой-нибудь бытовой штуковины. Простая программа, созданная нажатием нескольких кнопок и определяющая работу этой бытовой штуковины все равно остается программой, а процесс ее создания остается программированием.
Есть очень сложная часть программирования, требующая разделения розличных задач программирования между разными специалистами (от разработчика архитектуры до тестировщика).
И есть огромное количество промежуточных вариантов разной сложности.
Общее у всех этих вариантов программирования только одно.
Есть некоторое поведение, которое нужно четко описать для некоторой штукоаины, умеющей выполнять определенные команды.
Процесс описания этого поведения понятным для штуковины образом, включая тестирование, м называется программированием.
Тестировщик, когда пишет автотесты — программирует. Сисадмин, пишущий скрипты — программирует. Девопс, несомненно, программирует тоже. Программирует датасаентолог, и программирует специалист по ИИ (к слову, почему у этой профессии до сих пор нет емкого названия?). Программирует математик и физик. И даже бизнес-аналитики программируют, пусть и в экселе. Для моих знакомых экономистов программирование — львиная часть работы. Я убежден, что поскольку все эти люди программируют и используют программирование для работы — они программисты. И для каждого из них обучение программированию — это просто одна из частей их профессиональных навыков, при чем скорее всего самая простая.
Так же и для разработки ПО, т.е. для софтверной инжинерии, которая и подразумевается в подобных текстах, программирование это просто первый, базовый и простейший навык, в изучении которого нет никакой сложности. Переменная и константа, последовательность, ветвление и цикл, ввод и вывод, массивы и матрицы, функции и их композиция — это, собственно, и все программирование. Этому может научиться любой.
Но разработка — это инженерная дисциплина, или, как минимум, ремесло, и программирование — это просто капля в море, по сравнению со всем остальным. И да, по моему мнению софтверный дизайн, паттерны, идиоматика конкретного языка, владение конкретными интрументами, знание конкретного фреймворка, бекграунд в CS, алгоритмические навыки, знание предметной области и все такое — это уже не программирование, это уже часть этой самой инженерии. И вот это вот сложно. А программирование это просто.
Фразу "Научи меня программировать" я слышу как научи меня думать… Кодить можно — тут запомнить только синтаксис языка. А вот программировать — уж извините, тут научить нельзя, только научиться.
Наверное, программирование, как и любая другая (умственная) профессия не является сложной для человека уже освоившего профессию. Разве хирург во время операции думает как ему тяжело сейчас(не хотел бы попасть к такому)? Я думаю, что нет. У него многое уже доведено до автоматизма, в том числе принятие тех или иных решений. Поиск новых решений основывается на предыдущем опыте и когда этого опыта достаточно, мозг довольно быстро предлагает решение для поставленной задачи. Мы же тоже нейронки. Поэтому сложность программирования это вопрос сложности обучения тому или иному направлению программирования(какое-то проще, какое-то сложнее). То что 5 лет назад мне казалось сложным, сейчас является обыденным и поэтому я и говорю, что «чем дальше, тем проще».
Так же, как и для музыкантов и художников желателен свой склад ума, иначе будет херовый результат.
Вот только забыли сказать что программа которую Джон написал по ТЗ записному на салфетке из 2 строк за 2 часа в 2 часа ночи после звонка идиота из генеральных директоров который разбудил его и заставил встать с неудобного дивана после 10 часов другой авральной работы и 2 часов дороги по загазованному городу в спальный район полный бомжей где зайдя в однокомнатную квартиру которую снимают 3 других студента на нетбуке с сухими слезящимися красными глазами гробя здоровье кофеином.
И эта программа на 700 строк кода где он в одном месте ошибся в цикле внезапно для тех-же 10 миллионов человек которые заплатили за неё по 1$ экономит 2 часа работы каждый день то в итоге имеем:
1e+7 людей на 2 часа = 2e+7 часов
2e+7 часов / На 16 часов = 1250000 человека дней — 156250 дней = 18750000
18750000 человека дней / 356 дней = 52668 лет
52668 лет / 64 человеко-жизни ~ 822.9 человек
822.9 человек Джон не убил а спас в цену за 1$ и принес помимо прибыли с жизни 822.9 (налоги, рабочая сила и т.д и т.п) своей родине еще и 10 000 000$ своему шефу.
А получил за это
- строгий выговор и штраф в 1000$ от этого идиота который платит Джону за всю его работу а не только эту всего 120000$ в год.
- лютую ненависть от этих 822.9 нелюдей
- зависть всех бомжей на улице
- и ВаПщЕ оН СтРаННыЙ бОтаН пГыЩяВый для всех девушек
Как-то так.
В эту игру можно играть в обе стороны "товарищи" менеджеры и тут мы задавим вас на своем уровне.
Прошу прощения, Вы это сейчас серьёзно? Быть может, человек, который пишет документы, используя Latex, тоже программист?
Да, черт побери, чем глубже в лес тем толще бревна. Когда часто осознаешь ограничения мозга в области его оперативки, когда не получается уместить все дерево возможных путей развития событий, и приходится разбивать на отдельные логические компоненты, логику взаимодействия которых реально видеть в уме разом. И когда наконец напишешь код и запускаешь его, осознаешь ещё раз что все равно что то упустил, а потом ещё раз осознаешь когда код уходит тестировщику. И это все до того как придёт юзер со своим нестандартным мышлением.
Но ведь за это и любим эту работу, нам нравится над собой издеваться )
И SW инженеров.
Первые могут пройти 3х месячные курсы после какой нибудь другой вышки, а вторые были выдраны в хвост и гриву в течении 5-7 лет жесткого обучения.
Первые в индустрии обычно ограничены ростом, только если конечно не гений, но таких 1 на тысячи, а вторые почти не ограничены.
Это хорошая иллюстрация разделения на просто и сложно. Для первых все просто, для вторых все уже очень не просто, т.к. они заглянули в кроличью нору и знают ее глубину.
Недавно тут проскакивала статья о человеке пытавшемся устроится в яндекс, он не мог оценить О алгоритма, гордился тем что не использовал эту нотацию в своей карьере предыдущей. Тета нотация к примеру скорей всего в этом контексте фантастика.
Есть другой хороший маркер в професии — производительность, почему она от одного человека к другому может меняться в десятки раз, а иногда в бесконечность. Кто-то может за неделю, кто-то за месяц, а кто-то и за год не может, хотя все вроде знают предмет.
Ну и последнее — люди в первых комментариях спрашивали определение сложно и примеров по возможности:
Сложно — это количество знаний в разных областях (алгоритмы, математика, архитектура, аппаратное обеспечение, физика и тд и тп), которое требуется чтоб принять взвешенное решение в каждой новой задаче которая появляется перед вами.
Если вы думаете, что я преувеличиваю позвольте привести пример — представьте что ваша компания разрабатывает ASIC ваша задача как инженера SW помочь аппаратной команде разделить функцинал между аппаратными частями и программными, помочь спроектировать интерфейсы взаимодействия, переложить часть алгоритмов в софт с жесткими ограничениями по сложности, памяти. Там вам понадобятся и О большое (тета и омега), математика, физика…
Все просто пока вы выполняете однотипные задачи по шаблону/инструкции, но как только нужно выйти за эти рамки и делать что-то новое тут начинается сложное — чтоб принять правильное решение нужно огромное количество знаний и уметь ими пользоваться и стэк оверфлов тут уже не поможет, если нет образования и кругозора Вы даже не будете знать какие ключевые слова гуглить.
Мне кажется, умение программировать — это просто что то, зашитое в генах. Как объём лёгких. Если он у тебя маленький — тебе нечего делать в силовых видах спорта. Как кенийские бегуны, которые берут медали на олимпиадах не потому, что долго тренировались, а потому, что это их гены.
К чему это я? Да к тому, что можно любого научить каким то азам программирования, что он даже будет что то делать. Но, если тебе это не приносит удовольствия, вряд ли ты станешь действительно хорошим программистом. И, надо прекратить мучить себя, а найти работу, на которой будешь действительно счастлив.
Это только одна из нескольких историй, когда люди уходили из It и были счастливы.
На мой взгляд, вы говорите не об умении "программировать", а об умении "диагностировать проблемы и решать их".
Боже мой, как же вымораживают люди, которые преувеличивают важность своего занятия. На протяжении всей статьи вместо слова "программирование" можно подставить любую другую сферу деятельности, и все эти тирады о "сложности" также будут "верны".
Я не говорю, что стать хорошим программистом — легко. Но освоить с нуля эту профессию также сложно, как и что-либо другое, особенно будучи уже взрослым. Это не такое вот именно программирование по-особенному сложное. Это само по себе самостоятельное осознанное обучение — сложное. Любое непривычное для мозга занятие будет очень тяжело даваться, и програмированние в том числе.
Поэтому, при всей любви к этой сфере, пожалуйста, давайте не будем подчеркивать сложность именно программирования. Ну бред же, ну.
Я к чему это — мало запоминать, мало быть хорошистом/отличником, нужно иметь определенное мышление и способности, уметь держать здоровые модели в голове и оперировать абстракциями. Если для вас любое начинание дается легко — я могу только за вас порадоваться, но не все такие.
В ворде можно научиться писать всем, простенькие скрипты писать тоже, сейчас в профессию затягивают как пылесосом, лишь бы хоть что-то мог, но не стоит по средней температуре в палате вычислять нормальную температуру тела.
Человек выше пошутил, сравнивая вождение и программирование — удобно ставить разговор в такой ракурс, но давайте не будем придуриваться и бежать в крайности.
Я лишь хотел сказать, что вот подставить на место «программирования» любую другую область — то ваше утверждение в духе «нужно иметь какую то предрасположенность/быть таким то сортом людей» тоже окажется верным. Попробуйте с нуля освоить бух-учет, например. И не просто дебет с кредитом различать, а полностью читать баланс и p&l. Или попробуйте освоить создание музыки, или осилить пол-iron-man, или… да что угодно. С нуля во взрослом возрасте. Всё это будет сложно. Во всех этих занятиях бОльшая часть начинающих — отвалятся. Но не потому что «с рождения у них нет предрасположенности к n». А просто потому что это сложно — с нуля, систематически углубляться в новое.
Дело не в программировании, а в обучении впринципе.
Бух учет — сколько ему учатся, какие дисциплины и сколько учиться инженер программист и какие у него/нее дисциплины? Это сравнение, беспристрастное — даст вам представление о сравнении сложности.
Почитайте:
Бухгалтерия: www.masu.edu.ru/education/additional/programs/bukhgalterskiy-uchet-analiz-i-audit
Компьютерные науки (Основные учебные курсы): spbu.ru/postupayushchim/programms/bakalavriat/matematika-i-kompyuternye-nauki
Если мы говорим про хирурга — учатся еще дольше, риски выше как и ответственность и да, на мой взгляд хирургия (если это конечно не порезы штопать) сложнее и более стрессовая область чем программирование, как и многие другие области.
Играть в игру мы тут все победители, достаточно участвовать наверно это слишком. Какие то профессии простые, какие то сложнее, а какие то доступны лишь не многим, так было, есть и будет.
И конечно я согласен, что заходить в специальность с возрастом сложнее, но опять же смотря в какую, везде свой порог и свои особенности. После 40 вы уже не станете физиком теоретиком почти наверняка, дворником легко.
Я считаю, что на самом деле, это такая рационализация людей в первые, самые сложные времена постижения новой сферы. То есть тут что бухучет, что программирование, первый год-два будет выносить мозг неподготовленному. Всё будет даваться тяжело, и ничего не будет понятно. Наверное, на этом этапе многие и забрасывают полноценное вхождение в ай ти. Но это также было бы справедливо и для бухучета, если бы он был таким же популярным, как айти.
Ато мне это видится как какое-то скидывание ответственности. Вот не осилил человек программирование, и говорит, мол, «у меня не такой склад ума/мне не дано...». Да нет же, тебе в любой области будет также тяжело на старте. Уж не верится мне, что программирование — ну это прям никак не поддается понимаю при должном упорстве. Да, кому-то это дается быстрее, а кому то — медленнее. Но нет такого, что «программирование доступно только такой то группе людей», ибо «мышление не то». Глупость же.
Больше верится тому, что люди используют это для того, чтобы поднять чувство важности за счет своего занятия.
тамошний главбух был гением своего дела
придумывать схемы законного ухода от налогов — это вам не журнал посещений в школе вести
это был реальный мозг, специалист по переработке крючкотворства и реальной информации
поэтому я не сравнивал свою работу с его
мы вместе на одинэске сделали конфу которая экономила адские проценты
Дело не в программировании, а в обучении впринципе.
Не… Дело не в обучении, а в ОБУЧАЕМОСТИ. У каждого есть свой потолок, выше которого его не обучить, как ни старайся. Не каждый сможет освоить программирование. IMHO, количество людей не земле, которые могут стать программистами меньше, чем количество людей, которые могут стать бухгалтерами, но больше, чем количество людей, которые могут стать хирургами.
Приготовление пищи — это сложная задача, требующая терпения и внимания к деталям, много знаний и опыта.
Любая задача может казаться сложной, если она выполняется не достаточное количество времени для автоматизации паттернов. В среднем, по моим наблюдениям для овладения практически любым навыком, требуется пол года или 6+-1 месяцев. Вопрос, чего ты хочешь достичь?
Программирование — это сложно