Pull to refresh

Comments 263

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

В точку. Только так и можно это решить.

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

Боже закрой свой рот и не пиши своё мнение нигде больше

После обращения ставится запятая )

В вузах тоже не все идеально (я интервьирую студентов на работу, поэтому хорошо знаю), но это тема отдельного поста

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

Поэтому если диплом сдан (а все работы сделаны, а не куплены), то можно считать, что у человека есть:

- набор теории (пусть даже не очень хороший набор, но он уже найдет чего ему не хватает)

- несколько решенных задач

- некоторый опыт работы с уже настроенными IDE и всяким другим профильным ПО. Без этого может быть трудно начать что-то делать. Я с ужасом вспоминаю мои попытки поставить borland delfi с дисков триады в нулевых.

Но ситуацию с "обучающимся" в вашем посте я не понимаю. Может какая-то крайняя форма перфекционизма? "пока все не изучу, не буду браться"

Вот кстати да. Я учился в двух разных вузах в разных странах, у нас по фиксированной программе и в Финляндии по гибкой. И в обоих несколько раз вел занятия.

И уровень студентов в Финляндии был просто ппц. Грубо говоря можно было в любой момент взять любой курс, наплевав на все рекомендации что именно нужно знать, в итоге вместо distributed automation system design я напополам с другим чуваком объяснял студентам чем объект от класса отличается. Не, там было написано что нужно "уметь программировать", но кто ж читает описание курса, правда?

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

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

Да, отказаться можно было. Но по сути тогда штудент теряет полгода (вернее год, когда курс пойдёт на новый цикл). Да, если это курс по выбору (коих было 60% из кредитов) - можно добрать чем-то ещё. Но это все равно потеря времени, а 3/4 неместные, общага стоит прилично, квартира еще больше, мама-папа скажут "атата". А если это обязательный (для получения major/minor был список на 120 кредитов, где-то 40 обязательно) - теряешь год железно, плюс кафедра теряет выпуск, это нехорошо. Я могу расписать как там отстояли (от слова отстой) дела с финансами если интересно, но будет грустно.

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

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

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

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

Там что, к перегибам в подобную гуманность принуждает конкуренция между ВУЗами? Или что?

Я ему уже дал ссылку на простейший пример с указанием скачать из интернета симулятор Icarus Verilog и написать две строчки ответа - https://github.com/yuri-panchul/systemverilog-homework/blob/main/01_combinational_logic/01_01_mux_question.sv

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

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

К слову о задаче. Что-то с трудом представляется ответ в виде двух строчек (если, конечно, хаки в стиле https://www.ioccc.org/, а придерживаться показанного coding-style). Да и использование тернарного оператора здесь... Провоцирует сложно читаемое и некрасивое решение. Впрочем, это учебная задача - почему нет... Автору виднее.

assign y = sel1 ? (sel2 ? d3 : d2) : (sel2 ? d1 : d0);

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

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

А курс, судя по заданиям, весьма не плох. Правда, довольно сильно "подточен" под вашу специфику. Как по мне, так категорически не хватает I2C master/slave или хотя бы одного из вариантов SPI. А может даже и UART'а.

Начальные примеры идут на разные варианты синтаксиса - сделать мультиплексор пятью способами, освоить generate итд.

Примеры с SPI, UART и I2S (но не I2C) есть в другой репозитории примеров. Но я согласен, что у меня фокус другой - я ориентируюсь на обучение всяким микроархитектурным комбинациями конвейеров, арбитров и FIFO, так как это частые вопросы на интервью в компании которые проектируют высокопроизводительные ASIC-и, и этого мало в учебниках (многие учебники, особенно старые, останавливаются на FSM и не учат всяким skid buffers, credit counters итд).

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

Дык... а смысл ему от этой ссылки, если он "ещё не купил компутер"?

Ну реально он не купил FPGA плату (исходно речь шла о дурацких вопросах про Verilog и FPGA, я просто перевел это на аналогичные вопросы по программированию)

Я не пойму, или Вы осёл, или он... Ваши слова "не купил компутер" - так к чему вообще весь спич?

В далёком 88-м мне нужен был МС0511 и стрёмная книга на 150 страниц, на развороте которой - был пример на Бейсике.

Ну я же написал в начале текста:

Некий товарищ полгода спрашивает у меня советы как начать с Verilog/FPGA/ASIC, но при этом ничего не начинает, хотя его вопросы становятся все более экзотическими. Чтобы было понятнее, опишу как бы это выглядело для программирования.

Написал UPD к посту:

UPD: В комментах несколько человек спросили, какие были реально его вопросы по Verilog/ASIC/FPGA. Я их сразу не описал, потому что подумал что софтверные аналоги для многих людей ближе. Ну хорошо, опишу:

Hello, world на верилоге выглядит например так:

module my_and(input a,input b,output c);
    assign c = a & b;
endmodule

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

https://github.com/yuri-panchul/systemverilog-homework/blob/main/01_combinational_logic/01_01_mux_question.sv

Реально его вопросы звучали так:

  1. "Я хочу производить цифровые схемы с помощью генетических алгоритмов. Что вы мне посоветуете изучить, чтобы я написал об этом исследование?"

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

  2. "Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

    См. ответ про генетические алгоритмы. Какой смысл разбирать ячейку UltraScale если он не знает что такое D-триггер, LUT, propagation delay?

  3. "Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма. Я читал что это возможно с Xilinx 62000. Это хорошая тема для исследования?"

    Моя реакция: В чем прикол разгребать partial reconfigurability feature заведомо устаревшего устройства XC6200 середины 1990-х?

Плюс куча вопросов про сравнение плат, курсов и учебников. Ни одну плату он так и не купил.



Из трёх вопросов вы более-менее по сути ответили лишь на третий. Самую капельку на первый и вообще ничего по сути - на второй.

Он за 6 месяцев задал вам 3 вопроса?

Нет, он задал штук 20 вопросов, в основном типа "а что вы думаете про ... некий редкий тул или курс ...". Я ему отвечал "на вашем бы месте я бы не пытался заставить работать редкий тул из-за глюков в поддержке языка, сonstrains и прочего, что требует опыт в том, как это обойти, а брал бы стандартный квартус, вивадо или gowin на худой конец с банальным икарусом и следовал моим инструкциям". Почему он не хочет следовать моим инструкциям, а ищет что-то другое? Он что хочет потом, чтобы я для него это эвалюировал, отлаживал и занимался траблшутингом?

Ну вот опять же.

Он же вас не спрашивал "подойдёт ли мне, новичку, который не знает A, B и C для стартапа тул X?"

Он вас спрашивал "что вы думаете про тул X?" Понимаете разницу?

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

Зачем ему эта информация, если он никогда не пробовал и квартуса тоже, то есть он не знает с чем я сравниваю? Зачем мне переводить байты интернета и печатать мнение, которое не будет использовано? Это как >/dev/null делать.

Более того, про большинство этих тулов я и сам имею недостаточно информации, то есть для нормального ответа мне его нужно установить, запустить на нем что-то, сравнить. Зачем мне это делать если это уйдет в /dev/null?

Я ему в таких случаях отвечал: "Займитесь исследованием нового тула сами. Эвалюация новых тулов - это отличное упражнение для молодого инженера. Такие компании как Fujitsu и NASA ставят практикантов на то, чтобы те попробовали тулы стартапов и написали об этом отчет."

Он этого никогда не делал. Чистой воды whataboutism.

Зачем ему эта информация?

Чтобы знать, к чему стремиться.

 Зачем мне печатать мнение, которое не будет использовано?

Ваше мнение: "реверс ячейки UltraScale не слишком осмысленен, это не то, к чему нужно стремиться".
Ваше мнение вполне будет использовано: неофит перестанет мечтать о том, как бы ему отревёрсить UltraScale.

Зачем мне переводить байты интернета?

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

Более того, про большинство этих тулов я и сам имею недостаточно информации

Так это же ещё проще:
- Что скажете насчёт тула N?
- Не знаю, не пользовался.
- А насчёт тула M?
- Без понятия.
- А насчёт тула K?
- Это ещё что за зверь?

Как видно, байты интернета экономятся великолепно. При этом вы отвечаете:
а) ...правду
б) ...по существу вопроса

Вообще по схожей тематике (вопросов и ответов в электротехнических сообществах) я написал отдельную статью.

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

Итак мой совет:

The steps:

  1. get a cheap FPGA board,

  2. read a textbook like https://www.amazon.com/Digital-Design-Computer-Architecture-RISC-V/dp/0128200642 ,

  3. In parallel start from the first example https://github.com/yuri-panchul/basics-graphics-music/tree/main/labs/01_and_or_not_xor_de_morgan

  4. then go to the second.

  5. After https://github.com/yuri-panchul/basics-graphics-music/tree/main/labs/10_hex_counter start look to the homework exercises https://github.com/yuri-panchul/systemverilog-homework

  6. Eventually get another textbook https://www.amazon.com/Digital-Design-Systems-Approach-2012-09-17/dp/B01FIWOYVU/ and start doing exercises with pipelines and fifos.

  7. Extend to the simplest CPU cores https://github.com/zhelnio/schoolRISCV then to more complicated cores.

Do everything in small steps, but in a systematic way. After several months you will know what to do better.

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

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

Либо, если я понимаю в личной переписке, что человек не просто надувает щёки, а в состоянии ответить именно на поставленный вопрос - иногда предлагаю деньги.

Но пол года ходить вокруг да около - похоже на отклонение.

Просто чел подрабатывает копирайтером и проституирует ваш мозг.

По-моему я исчерпывающе ответил ему на второй вопрос. Ячейка UltraScale содержит LUT, mux, D-тригеры и интерконнект. Он значения этих слов не знает, в частности потому что не следовал моим рекомендациям по литературе и упражнениям. Что мне делать? Объяснить ему каждый элемент? Я это сделал на митапах, которые он смотрел по зуму 5 раз. Но это просто так в мозги не входит, потому что мозг такую информацию отвергает как нерелевантную. Чтобы оно вошло, человек должен с помощью упражнений понять как работает например D-триггер и как он используется в дизайнах. Отчего ему станет ясно что D-триггер делает в ячейке UltraScale. Что-то объяснять человеку, который вообще не делает упражнения - это как проповедовать птицам. Таким занимался Святой Франциск, вы меня с нем не путайте.

  1. Он вас спрашивал, из чего состоит ячейка UltraScale? Нет.

  2. Он вас спрашивал, что ему следует изучить, прежде чем реверснуть ячейку UltraScale? Нет.

Он вас спросил "хорошая ли тема реверснуть ячейку UltraScale?" И как дополнение к ответу "да, хорошая/нет, не хорошая" (с описанием причин) ваш "ответ" был бы уместен. Но так, я вот лично до сих пор не могу понять, считаете ли вы реверс ячейки UltraScale хорошей темой.

Хорошая для кого, зачем? Для китайцев, которые хотят клонировать UltraScale для своих санкционных нужд? Может быть, откуда я знаю.

Для студента 23 лет, который 1) не знает что такое LUT и 2) не может купить платы с UltraScale потому что она стоит $3000, а ему жалко $50 на плату с Cyclone IV?

Я ему написал "структура UltraScale хорошо документирована". Это достаточно?

Все это похоже на странное развлечение: гуглить всякий мусор, а потом спрашивать слишком терпеливых людей "что вы думаете про XYZ?"

Вариант №1:
- Хорошая ли тема реверснуть ячейку UltraScale?
- Я бы сказал, что нет. На уровне логических элементов она и так хорошо документирована. На уровне транзисторов придётся обложиться ультрадорогим исследовательским оборудованием и возможно испортить несколько ПЛИС ценой в тысячи долларов каждая.
- Ясно, спасибо.

Вариант №2:
- Хорошая ли тема реверснуть ячейку UltraScale?
- Вам для этого надо изучить, что такое LUT, mux, D-тригеры и интерконнект.
- Так а идея-то хорошая?
- Нет. Потому, что <объяснения>
- Эээ. А зачем вы в контексте цели, смысла достигать которую нет, советовали что-то изучать, если сама цель - так себе?

А зачем ее покупать? Есть эмуляторы

Я так понимаю, явно не на листе формата А4.

В смысле симуляторы? На верилоге можно написать кучу кода, который будет работать в симуляторе на уровне регистровых передач, например Icarus Verilog, но не будет работать на плате. Потому что 1) не все конструкции языка синтезируемы в хардвер и 2) даже синтезируемые конструкции могут не проходит статический анализ задержек => логика не вписывается в период такта => дизайн в железе будет глючить. Упражнения с платой нужно именно чтобы это понять и научиться преодолевать. Впрочем товарищ не делал и упражнения с симулятором тоже.

Icarus поддерживает system verilog? Не знал.

Не так давно узнал про дешёвые ФПГАшки TangNano и заинтересовался. При поддержке чатГПТ написал и прошил простенькие штуки вроде этого: https://gitlab.com/lakroft/my-verilog-playing/-/blob/main/Blink/led.v

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

Icarus поддерживает часть SystemVerilog

А что Вы сами хотите?
Чтобы он начал учиться или чтобы он перестал Вам капать на мозги?

Если первое, то нужно, как говорят психологи, выявить его реальные потребности, и заменить ими мнимые потребности. Мнимые видно по тексту, человек не хочет быть занятым, но его радует ощущение важности своих действий. Да, он не выполняет план, но зато какие планы он строит.
Мой реальный пример, я построил у себя дома спортзал с инвентарем, но за несколько лет качком не стал. По ходу, если не тренироваться, то спортзал дома сам по себе качком не делает.
Я очень сильно хотел стать программистом, купил книгу по PHP, установил редактор. и ушел по своим делам, каждый день мечтая, что стану программистом. А через год я наконец то открыл эту книгу.
Поэтому я дал бы ему первое задание, только после выполнения которого будет второе задание:
- напиши список всего, чем ты хочешь или хотел заниматься.
- пройдись по каждому пункту и спроси себя как долго и с удовольствием ты хотел бы заниматься этим. Поставь пункту оценку от 1 до 10. И принеси этот список мне.

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


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

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

Прямота часто доходит до мозга лучше попытки вежливо обяснить ситуацию.
Пример:
Сходил как то к психологу за 200$, чтобы избавиться от детских травм. В конце сеанса, милый и вежливый психолог наорала на меня в духе "ты чего разнылся как баба? посмотри на себя, здоровый, крепкий мужчина, столько повидал в жизни, а теперь сидишь тут и ноешь. Так делают бабы, а не мужчины. И тебе не стыдно? Возьми себя в руки и скажи Я МУЖЧИНА, если не получится, можешь сказать Я БАБА" и тд.

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

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

У начинающих электрогитаристов такая фигня. А что если я захочу играть блюз, а у меня гитара для тяжелого металла. А что если я захочу играть тяжелый металл, а у меня гитара для легкой музыки. А что если я буду играть на концерте и меня не будет слышно. А что если... И вот они ищут ответы на вопросы, какие лучше датчики, какое дерево, какие усилители, какие педали и т.д., вместо того чтобы плюнуть на все это, купить что-то самое простое и стандартное, и наработать больше часов практики на том что есть. А еще, когда-то какой-то умный человек сказал, что нужен инструмент минимум за 1000 долларов б/у. Но нет, мы его слушать не будем, будем упорно искать новый за 300 и чтобы все гипотетические будущие потребности перекрыл. А если руки и доходят до инструмента, то вместо того чтобы на нем играть он 10 раз разбирается, паяется, собирается обратно. Потом еще полчаса-час надо покопаться в настройках на каком-то цифровом звуковом процессоре, вместо того чтобы купить на 500 долларов дороже нормальный усилитель, на котором всего три ручки - включил и играй. И все это без преподавателя, все самостоятельно. До одного из тысячи дошло что надо делать, остальные что-то непонятное постоянно ковыряют, ковыряют и ковыряют без результата.

У начинающих электрогитаристов такая фигня. 

Не только у гитаристов) Это норма. Непонятно вот что, автор уже далеко не школьник, с людьми вроде бы работает, неужели такие простейшие вещи непонятны? Или это байт какой-то? Да вроде ему не надо. Странно как-то.

Электрогитарист, который за полгода ни разу не потрогал струну, но задает вопросы о деталях соло Ингви Мальмстина? Ну для слушателя это понятно, а вот какую цель преследует такой программист или харверный инженер?

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

Множество людей точно также занимаются "спортом", "строят" дачу, "учат" иностранные языки и все такое прочее. Человеку реально учиться лень, это ведь тяжело, вот он "изучает" - моральное удовлетворение есть, а труда никакого не вложено в отличии от настоящей учебы. Неужели вам такие люди не попадались ни разу?

нужен инструмент минимум за 1000 долларов б/у

Как хорошо, что я этого не знал и просто купил 2 бу гитары за сотку. И усилок за 20. Иначе бы так и не начал

Тоже покоробило. Б/у (японец) за тысячу был актуален во времена интернета по карточкам. Уже в начале 2000-х в магазинах было полно как раз новых гитар за 300 (корейских), максимально универсальных, способных покрыть любые потребности новичка на годы вперёд. И три ламповых ручки за 500 против универсального процессора за 100 в наше время тоже такое ещё «правильное» решение.

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

Ничего не нужно делать, время расставит всё по своем местам. Тут проблемы то нет :)

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

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

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

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

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

начните с алгоритмов... Отличная "база".

Начните с выбора стартового языка, настройки окружения, установки IDE, и запуска вашего первого "Hello World!". Попробуйте поменять текст. Если почувствуете восторг, значит можно продолжать дальше - гуглите учебники по конкретному языку.

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

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

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

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

Социально приемлемая притом, да. Просто болт пинать несолидно, а тут - вроде как учишься.

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

прокрастинатор-перфекционист

Наконец-то я нашёл точную фразу для самоидентификации!

Будем создавать сообщество для борьбы за свои права? Или поспрашиваем вначале что к чему?

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

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

В такой ситуации мне кажется на вопрос "куда пойти" давать ответ "хоть куда" все равно что не давать вовсе. Ожидать вытекающих изменений из этого "мудрого ответа" в этом случае тоже ну такое.

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

Вводные:

  • Нравится говорить умные слова

  • Не нравится делать

Возможные предпосылки:

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

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

Я не понимаю что он хочет в конечном итоге. Набраться слов чтобы получить работу в каком-то месте где не проверяют кодинг на интервью?

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

Мне кажется, вы находитесь в плену своего предположения, что он должен "хотеть чего-то в конечном итоге". Это далеко не всегда так. Человеческая психика довольно сложна, и прямо сейчас где-то рядом с нами ходят люди за пределами 6σ нормального распределения. Кто-то из них может сыпать найденными в интернете словами и словосочетаниями, но за этими словами - пустота. Причем по меткому выражению Энштейна, глубина этой пустоты бесконечна.

Вы действительно хотите заниматься поиском смысла в этой бесконечности?

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

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

Мне кажется, вы просто пытаетесь анализировать иррациональные вещи.

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

  • Нравится говорить умные слова

Простите, а чего вы так решили?

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

Нравится говорить умные слова

Приходит мужик к сексопатологу:
-- Скажите, а вот если эрекция, но без эякуляции?
-- Ну, это, в принципе, нормально.
-- А вот если эякуляция, но без эрекции?
-- А вот это странно как-то.
-- А, к примеру, и эрекция, и эякуляция?
-- Это идеально.
-- А вот когда ни эрекции, ни эякуляции...
-- Молодой человек, так какие у вас конкретно проблемы?
-- Да у меня никаких, слова просто красивые -- эрекция, эякуляция...

Не будьте кормом.
Пять баллов!
В прошлом преподавал в кружке. Был один веселый цыган лет 14. Очень хотел собрать Айфон. Но учиться паять не хотел ))
Я был рад, когда он ушёл, потеряв интерес ))

Да, это похожая ситуация, но ему на глаз 22-23

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

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

Да каких только фриков не бывает...

Недавно история была с первокурсником. Родители оплачивали инстик, он ходил учился, всё хорошо. А потом хоба, родителей извещают об отчислении. Все в шоке. Оказалось что он записал себе только половину расписания, и посещал только половину предметов. Пацан там немного с приветом, с одногруппниками не общался, но с успеваемостью был порядок. Только по окончании сессии выяснилось, что часть предметов прошли мимо )))

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

тут все проще - он хотел айфон. а денег не было.

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

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

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

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

хуже, внутренний собеседник.

об этом я как-то не подумал.

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

А какая у вас стоимость часа, при менторстве? Такое ощущение, что ее нет

У меня другая модель. Вообще я высокооплачиваемый проектировщик ASIC-ов и на менторстве мне зарабатывать бессмысленно (столько сколько мне платят в час на основной работе, мне практически никакой новичок платить не будет). Все эти вещи - это часть моей побочной деятельности по образовательным программам. Их я описал в другой ветке:

https://habr.com/en/articles/815759/#comment_26843651

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

Я видел. Я очень уважаю вашу деятельность. Но, такие созвоны все же есть - менторство. И возможно оплата как раз бы позволила отсечь такие контакты.

Можно предположить что кто-то его "пинает".

Например? Кто-то хочет, чтобы он задавал мне дурацкие вопросы? Типа у него научный руководитель в институте сам неадекват и хочет от него чего-то странного, типа исследовать FPGA XC6200 1995-го года?

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

Со всеми соглашусь тут.

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

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

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

Но какую роль в этом играю я?

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

Кнопку "block/spam" нажмите и забудьте как страшный сон.

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

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

На счет работы и гипотез хз, я тоже знаю такого человека, который всё же начал писать код, но не смог остановиться на конкретном языке, в последний раз когда я ним общался он испробовал 5 или 6 языков и на всех дошел только до использования циклов и файлов, т.е. базовые программы какие-то мог написать, но что-то сложнее уже нет. Мотивацию я так и не понял его, но и вопросов по архитектуре процессоров 90-х годов он не задавал. Так что мб человек просто поверхностно интересуется и всё, без каких-то конкретных желаний. Некоторые кстати вопринимают работу программиста в романтическом ключе и думают, что будут сидеть в худи у набирать код со скоростью 600 знаков в секунду, а на практике мягко говоря это не так.

Но какую роль в этом играю я?

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

пихология

какая хорошая опечатка

Точно, спасибо. Даже исправлят не хочется. Наука о навязчивости.

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

Ну он хоть две строчки на питоне написал?

У чела паралич выбора

Хочется выбрать сразу и всё самое лучшее, и если нет уверенности, что выбор лучший (а её и не будет), то чел сидит и собирает информацию, с чего бы начать, чтобы 100% "не прогадать" (причём критерии "не прогадать" могут быть какими угодно и ещё постоянно меняться)

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

Через неделю А, через месяц Б, через год В, и т.д.

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

Писал программы для того чтобы рисовать себе деньги в сейвах Civilization и X-COM

Программирование всегда было инструментом достижения цели, а не абстрактное в вакууме "сортирование массивов"

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

Возможно поэтому никогда не возникало паралича выбора

У чела паралич выбора

Во во. Я прямо себя узнал.

Я всегда хотел научится писать (прозу). И когда я начал изучать это, смотреть ролики, о там как писать, я понял, что я начинаю теряться. Есть разные жанры, разные стили, разные приемы подачи текста. Та блин есть даже разные походы: кто-то советует начать с составления портретов персонажей и детальной проработки плана сюжета, и только потом начинать писать; другие советуют просто набросать характеры персонажей и "отпустить их в свободное плаванье", а там уже куда сюжет выведет, то и будет. В итоге десяток разных техник и способов. И это еще не касаясь самого текста (языка) как такового. А еще штуки 4 разных PoV. И какой из них выбрать… У каждой свои ограничения и нюансы. А диалоги – это для меня сейчас вообще катастрофа.

И в итоге я сижу перед пустым листом и блин не знаю как даже начать первую главу)) "Привет, я Рома и это история про мою первую работу…" или "Вечерело. Тяжелые свинцовые тучи медленно плыли по небу. Ветер играл с опавшими листья, то поднимая их в высь, то прибивая к земле. Молодой парень проводил взглядом пролетевший мимо листок и посильнее затянул ремень на грязно-сером пальто. Стряхнув с чемодана упавшие листья, он, вздохнув, пошел к покосившемуся крыльцу старого заброшенного дома…"

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

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

не знаю как даже начать первую главу))

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

Но ведь Вы это только что сделали!

Как-то так

Вот в том то и проблема. К середине главы, мне перестает нравится начало. Кажется каким-то банальным и шаблонным. Еще сильнее давя на самооценку. Знали бы вы сколько раз я начинал и сколько раз удалял. А заткнуть "внутреннего критика" не получается, и он продолжает капать на мозги.

Вот сегодня снова "начну" и надеюсь в этот раз – оно проживет больше времени.

Я уже думаю, может пойти на какой-то сайт типа ficbook и начать там выкладывать ориджинал…

Может реально, а вдруг получится)

" К середине главы, мне перестает нравится начало "
Как я Вас понимаю )) глава ладно, а когда два по 300 страниц написано и лежат уже лет 10? ))

а когда два по 300 страниц написано и лежат уже лет 10

Это уже следующий шаг, мне бы до него еще доползти)

Я уже думаю, может пойти на какой-то сайт типа ficbook и начать там выкладывать ориджинал…

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

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

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

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

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

Дарья Донцова вот не переживала и заработала миллиард)

Ну это обычное. У буржуев на эту тему есть выражение: "Writing IS rewriting."

Я уже думаю, может пойти на какой-то сайт типа ficbook и начать там выкладывать ориджинал…

Всмысле, "я уже думаю ..."? По-моему сейчас это чуть ли не единственно верный способ вкатываться в писательство.

Используй правила Хайнлайна - пиши каждый день по 10 страниц и никогда ничего не переписывай.

Гёте писал "Фауста" 60 лет :))

Но ведь Вы это только что сделали!

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

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

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

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

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

Я сейчас не про идею книги, а вот про конкретное начало первой главы, самые первые пару предложений, которые идут после "Глава 1".

Если возможно, хотелось бы услышать ваше мнение специалиста (я без сарказма).

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

А Вы ожидаете, что Вам во втором абзаце уже расскажут, что убийца — дворецкий?

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

Ну или вот так.

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

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

Вечерело. Тяжелые свинцовые тучи медленно

Кстати, у вас очень хорошо получается

Меня заинтриговало и захотелось узнать историю этого парня

"Будь осторожен в своих желаниях: иногда они сбываются..."

Напомнило вот это

-- Видите ли, доктор, чего я хочу -- я хочу, чтобы в тот день, когда моя рукопись попадет в руки издателя, издатель, прочитав ее, поднялся бы с места и сказал своим сотрудникам: "Господа, шапки долой!"

...

-- Целые вечера, целые недели бьешься над одним каким-нибудь словом... а то и просто над согласованием. Тут Гран остановился и схватил доктора за пуговицу пальто. Из его почти беззубого рта слова вырывались с трудом. -- Поймите меня, доктор. На худой конец, не так уж сложно сделать выбор между "и" и "но". Уже много труднее отдать предпочтение "и" или "потом". Трудности возрастают, когда речь идет о "потом" и "затем". Но, конечно, самое трудное определить, надо ли вообще ставить "и" или не надо.

Альбер Камю. Чума

Вы же не написали самого главного:

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

Есть разные жанры, разные стили, разные приемы подачи текста.

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

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

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

Я лет в 14 написал такое.

Только гораздо красивее. Сжёг вместе со вторым томом мертвых душ. Теперь жалею.

Я тоже хотел, а потом наткнулся на цитату Толстого - "если можешь не писать, не пиши". Всё просто :)

Рисованием анимации тоже можно учить - я собственно при преподавании Verilog и FPGA предлагаю участникам нарисовать что-то графическое на экране реконфигурируемым хардвером сразу на первом занятии. Просто человек говорит что хочет написать статью про генетические алгоритмы на FPGA (+ML + другое) но не делает даже примитивный модуль двумя кнопочками, лампочкой и "assign a = b & c;" что является эквивалентом программы на бейсике "10 input a, b 20 print a+b".

паралич выбора

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

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

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

Итд - шесть месяцев. И Hello, world еще не написана. Как вы думаете, с какого вопроса вы перестанете терпеливо объяснять? Как вы будете реагировать потом? Что это вообще такое? Какое-то психическое нарушение или троллинг?

У меня та же проблема с рядом знакомых и детей знакомых.
Вопрос из STC: хочу знать А
Ответ такой же - открой и прочитай книгу номер 1, книгу номер 2, сделай задачи 1,2,3 отсюда.
Проходит полгода. Не сделано ничего.
Новый вопрос: вот, цыгане говорят что они учать А за неделю.
Открываю учебный план цыган, там русским языком:
Плохой пересказ книги 1, книги 2, плохой перевод задач 1,2,3.
Сообщаю.
Опять перерыв на полгода.

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

У меня за 15 лет нет ни одного случая когда бы ко мне кто-то обращался за помощью "начать программировать" и чтоб этот человек реально "вкатился в айти". Для себя сделал вывод - если уж учить, то джунов. Которые уже добились минимальной цели своими усилиями. С ними правда проблема обратная - они не хотят слушать, так как знают лучше :)

Насчет что делать - я бы посоветовал брать залог. Т.е. говоришь, давай 50к, после того как напишешь игру "Жизнь" (ну или любую другую цель на ваш выбор), я тебе его возвращаю. Если за 6 месяцев не напишешь, то залог не возвращается.

С ними правда проблема обратная - они не хотят слушать, так как знают лучше :)

именно так. Правда, потом на хабр стекает жир про знание числа лопастей вентиляторов
жир тут - https://habr.com/ru/articles/815263/

"Легко отвести лошадь к воде, но гораздо сложнеее заставить её пить" (c)

Проходит полгода. Не сделано ничего.

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

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

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

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

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

Цель может быть любая: автоматизация какойто ежедневной надоедливой рутины,
Или например чтобы в игре автоматически кушалось зелье здоровья, если мало HP ?
Или какая-то формочка в MS Access куда заносить ежедневные траты и потом вывести графики?
Я хочу сказать, что просто читать книгу по языку и вбивать/запускать куски кода может быстро надоесть, если нет ни какой цели кроме вкатиться в айти

Хах, я вот golang хотел еще в 2016 начать учить. И вот спустя года, учу и плачу. Меня слишком подкупает идея горутин что бы бросить, но правда то тут то там слышу о каких то проблемах языка, но и в целом он не привычный. Но мне не привыкать с синтаксисов прыгать, так что, я просто делаю через практику как получается. Но если прям совсем честно, я мечтаю заменить ноду на менее ресурсоемкий аналог да еще и с кросс компиляцией.

то тут то там слышу о каких то проблемах языка

Не ругают только те языки, которыми никто не пользуется

да, мне как пыхарю это знакомо))

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

  1. Заставьте его купить отладочную плату. Только не "какую нибудь", а вполне конкретную, дайте ему ссылку на интернет-магазин. Иначе он опять замучает вопросами. Не предоставляйте ему свободы выбора.

  2. Заставьете его установить тулчейн. Опять же какой-то конкретный, по Вашей рекомендации.

  3. Заставьте его развернуть basics-graphics-music, собрать первую, вторую, третью лабы и протестить их на отладочной плате.

  4. Заставье выполнить задание к лабам.

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

Был у меня подобный случай - человек хотел изучать С и C++ и никак не мог определиться, что вперед. Я склонил его изучать ассемблер, он потыкался и понял, что вся эта кухня вообще не для него. :)

Скажите ему просто чтобы JavaScript выучил

Есть шанс, что тогда он в проституцию уйдёт...

Ну если человек спрашивает про verilog, может в его голове просто не укладывается, как все строчки "кода" могут выполняться одновременно и параллельно?

Хотя написанное жесть, конечно. Можно хотя бы один вопрос для примера?

  1. "Я хочу производить цифровые схемы с помощью генетических алгоритмов. Что вы мне посоветуете изучить, чтобы я написал об этом исследование?"

  2. "Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

  3. "Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма. Я читал что это возможно с Xilinx 62000. Это хорошая тема для исследования?"

Ну и куча более банальных вещей "как вам курс XXX? Книга YYY? Плата ZZZ?" "Можно я с вами серьезно поговорю, чтобы выбрать план своего изучения цифровой микроэлектроники?"

Что вы мне посоветуете изучить, чтобы я написал об этом исследование?

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

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

  1. "Я хочу производить цифровые схемы с помощью генетических алгоритмов. Что вы мне посоветуете изучить, чтобы я написал об этом исследование?"

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

  2. "Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

    См. ответ про генетические алгоритмы. Какой смысл разбирать ячейку UltraScale если он не знает что такое D-триггер, LUT, propagation delay?

  3. "Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма. Я читал что это возможно с Xilinx 62000. Это хорошая тема для исследования?"

    Моя реакция: В чем прикол разгребать partial reconfigurability feature заведомо устаревшего устройства XC6200 середины 1990-х?

Он вам за 6 месяцев написал 3 вопроса (на два из которых вы, в общем-то, не ответили) и вы об этом запилили статью на Хабр?

А зачем ему писать исследование?

Юрий, судя по вашей квалификации, час вашего времени в формате консультации стоит не менее сотни долларов, поэтому стоит задать ещё один вопрос:
«А зачем мне тратить своё время на того, кто вообще следует моим советам?»

Но если по какой-то причине всё равно хочется отвечать на вопросы бездельника неофита, то имеет смысл хотя бы оградить себя финансовым барьером, и при следующем обращении "пытливого ума", предложить ему абонемент на таких условиях:
Первый вопрос стоит 1024 рубля, следующий стоит 2048 рублей, следующий — 4096 рублей, и так далее. Каждый следующий вопрос будет стоить в 2 раза дороже предыдущего.

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

Да, я согласен, надо похоже вводить принцип: если неофит не последовал моему совету (сделать такой-то набор упражнений), то после это брать деньги. Прогрессия - это интересная идея.

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

Я не умею программировать - зато неплохо получается быть учителем программирования. Молодой человек меня точно прочитает? Только проверенная последовательность:

  1. Слепая печать на Двораке, я так понимаю у вас старший школьный возраст или 1 курс - ещё не тот случай когда опыт с дефолтной раскладкой будет мешать. Младшие осваивают меньше чем за 10 часов, дальше костность мозга будет давать о себе знать. Поэтому я отношусь к этому как переболеть ветрянкой - или в детстве, или никогда.

    1.5 Английский, желательно не теория, а в формате "а следующих часа 2 я понимаю русский язык только рид онли". Если можете, разумеется. Какой там самый важный язык для программиста? (с)

  2. Математика, для старших наверное будет достаточно короткого курса из "Удовольствие от X", и хоть что-то о теории информации; младшеньких пробую прогонять по Петерсон 1-6кл. Тоже самый важный язык для программиста, но некоторые виды программирования её не требуют.

    2.5 Долгие разговоры о: типах данных, открытом и свободном программном обеспечении, о всяких-разных компьютерных интерфейсах начиная с USB и заканчивая да хоть JSON, об императивном и функциональном обеспечении, об ЯП высокого и низкого уровня, о Тьюринг-полных языках и домен-специфических... Да вы и сами написали не одну тему на которую стоило бы поговорить. Должна же быть польза из полтора десятилетия чтения Хабра?

  3. C, SQL, Lisp, Javascript, Python, Java - вот по моему мнению основные направления прокачки расположенные примерно в моём порядке веры в необходимость каждого из них. Главное - настроить ему среду исполнения для каждого, остальное пусть сам.

    3.5 Любые тулинги которые считаете важными - Linux, Git, Vim, всё что умеете.

Так и запишем, все кто не используют Dvorak-раскладку - ненастоящие программисты ;)

Не настоящий англичанин тогда уж, если обратить внимание на пункт 1.5. Например, я вижу как люди с Двораком осваивают английский быстрее людей с Qwerty, а люди с любой слепой печатью осваивают работу с текстом быстрее чем без оной. Грязный секрет индустрии в том, что вас возьмут программистом и без навыка печати, о таком навыке даже в резюме не похвастаешься, это надо не для работодателя же. Это как когда готовят чемпиона в велоспорте, то обращают внимание даже на то что улучшит эффективность на 0.01% вроде вес краски вела или сопротивление воздуха о волосы на ногах - потому что в длинном маршруте эти проценты будут складываться в нечто большое, много таких примеров есть в книге "Атомные привычки". Дело не в том сколько текста юный программист введёт за X времени, дело в том сколько раз он отвлечётся от дела на поиск буквы "А" ...

Я почти готовый сражаться за холм (возможно, в виде статьи про модальные редакторы текста) что программисты без слепой печати на латинской раскладке - программисты которым мешает гандикап. Разница между раскладкой Дворака или раскладкой сгенерированной нейросетью заключается только в кривой обучения освоения - лишь бы ваши пальцы побыстрее впитали нужные рефлексы. Например, без слепой печати никто не берёт Vi(m) так как в зависимости от наличия таковой он будет казаться или самым сложным редактором на свете или самым простым.

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

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

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

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

Хороший пример со Стивом Хоккингом. Он уж точно двораком не владел, и 100% людей владеющих двораком даже на 5% не смогут повторить то, что он сделал без дворака.

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

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

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

БОльшую часть времени современный программист читает, а не пишет. И чем выше квалификации, тем больше читает. Пропорция 1:10 это норма.

У меня какая-то соседка по подъезду примерно раз в полгода просит нарисовать ей на карте района кольцевой маршрут для утренних пробежек на дистанцию 3_000 метров. Ответы типа "вот так по квадрату вокруг блока будет 3 километра примерно" не принимаются. Ей когда-то доктор сказал, что что бы ей сбросить вес, надо бегать по утрам 3_000. Так что это очень важно, что бы не больше и не меньше. Не 2_900, не 3_100, а именно 3_000.

Просит она этот маршрут для бега уже лет 10 наверное. Ну и не бегает, конечно, кто бы сомневался, а только с каждым годом еще толще становится.

А можно было десять лет назад просто нарисовать какой-нибудь маршрут около 2-5 км и заявить, что здесь ровно 3000 метров.

В начале так и сделали. Получили ответ, что не похоже, чтобы здесь было ровно 3_000, вы всё врете.

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

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

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

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

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

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

Будь-то понимание глубоких принципов РЛС, GNSS навигации, инерциальные навигационные системы (INS), беспроводные радио интерфейсы, АФАР(ы), радио электронная борьба (РЭБ), гидроакустика, пластиковые карты с чипом, SIM карты, контрольно-кассовые терминалы, сетевые протоколы, аудиотехника, управление электродвигателями (BLDS/SеpperMotors и т.п.), управление инжекторным ДВС, Battery Management System (BMS), DC->AC инверторы, баллистические вычислители, головки само наведения ракет (ГСНы), электро-кардиография, дозиметрия, астрономические спутниковые вычислители, теория автоматического управления (ТАУ, LQR), криптография, ядерный магнитный резонанс (ЯМР), формальные грамматики и тому подобное. Да всё что угодно, где так или иначе работают программы.

Программист без экспертизы в какой-либо предметной области это однозначно Juniour.

Программист без экспертизы в какой-либо предметной области это однозначно Juniour

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

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

И это не то чтобы какие-то исключительные случаи. Достаточно открыть тот же HH или LinkedIn и посмотреть вакансии для разработчиков, в большинстве случаев (кроме какие-нибудь очень специфических сфер типа эмбеддеда, где обычно требуют чтобы сотрудник умел и делал работу трёх разных человек за зарплату одного) заголовок позиции будет типа "Senior Java разработчик", а предметная область будет упомянута в лучшем случае где-то глубоко внутри описания вакансии, причем скорее всего не среди обязательных требований, а в разделе "nice to have". И на собеседовании у кандидата будут спрашивать алгоритмы, фичи языка, СУБД и паттерны, а не глубины предметной области - именно потому, что найти программиста знающего условный Python гораздо проще, чем найти программиста знающего условный Python и при этом глубоко разбирающегося например в логистике. А для знаний предметной области и постановки задач разработчикам в любой более-менее приличной компании есть аналитики или кто-то исполняющие их обязанности (технологи, менеджеры продукта, и т.д.)

По моим ощущениям - это похоже на что-то из области психиатрии. Из серии хочется-мечтается, но не можется из-за дефекта воли.

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

Как кто-то выше рассказал про желающего стать генетиком и проживающего без работы.

Понять. Сделать выводы. Принять как есть.

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

Так смысл его самоудовлетворения в том, что профессионал общается с ним на равных и уделяет ему время. С чатгпт так не интересно.

А почему бы его просто словами не спросить, вот дескать чел, ходишь ко мне полгода, я тебе дал задание, написать Hello World, ты не написал. Какая цель-то всех этих вопросов? Иногда столкновение с реальностью помогает решить внутренний конфликт.

А он, случайно, не индус? Они такое любят. Нам как-то прислали индуса из Германии, чтобы мы его учили embedded. За 3 месяца он не написал самостоятельно ни одной строчки, хотя знал все умные слова. После "обучения" мы его вернули работать на завод в Дании, откуда он через небольшое время уволился в связи с женитьбой и уехал в Индию. (Уже странно - да?) Вёл он себя как обычный индус (я бывал в Индии много раз - т.е. индусов видел много), жаловался на неонацистов в Дрездене, радовался снегу, как ребёнок... И тут то и выяснилось, что после женитьбы ему переходит семейный бизнес, о чём он никогда не говорил. Что он из совсем небедной семьи и зачем ему было учиться на программиста - ещё одна загадка.

Так что и ваш товарищщ может оказаться совсем не тем, кем кажется)))

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

Ой! Я не это имел ввиду. "Наш" индус - то 2 тяжелых случая в одном. 1-й - они боятся принимать самостоятельные решения. 2-й - он из богатой индусской семьи с непонятными мне традициями.

А "ваш" индус - это только тяжелый случай №1. Выглядит это так, что если у них есть возможность переложить ответственность на начальника, то они это сделают. Это правило доходит до абсурда - пусть начальник решит, как лучше написать: "if (flag == true)" или "if (flag != false)".

Это не значит, что индусы бесполезные. Во-первых, далеко не все такие. Во-вторых - он наверняка умеет что-то, что не умеем мы, белые обезьянки. Был у нас случай, в другой компании, когда никак не могли заставить индуса работать. Парнь хороший, а толку от него ноль. А потом попросили его писать документацию и о чудо! Он блестяще справился с работой! (Которую никто из нас, белых, не любит.)

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

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

"Общество без цветовой дифференциации штанов лишено смысла" (с)

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

Не нужно помогать тем, кто не в состоянии Вашу помощь принять. Есть такой типаж.

Hidden text
Самоуверенный Шариков
Самоуверенный Шариков

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

Я описал в комменте выше:

https://habr.com/en/articles/815759/#comment_26843651

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

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

Ну у меня вообще нет цели кому-то искать цель жизни. Я работаю с людьми, которые активно захотели освоить базовые навыки проектирования цифровых схем на уровне регистровых передач, для того чтобы использовать это либо для получения работы (проектировщик ASIC, FPGA, верификатор, проектировщик гетерогенных систем из софтвера и хардвера, разработчик тулов для автоматизации проектирования) либо для углубления понимания смежных дисциплин, либо для побочной разработки open-source проектов. Я не увлекатель, не социальный работник, не ентертейнер и не научно-популярный лектор. Этим занимаются другие.

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

По-моему советы рассчитаны на подготовленного человека "в теме". Отсутствует первая ступенька, в которой давалось бы базовое понятие - что-то рассчитанное на объем знаний старшеклассника.

Некий товарищ полгода спрашивает у меня советы как начать с Verilog/FPGA/ASIC, но при этом ничего не начинает, хотя его вопросы становятся все более экзотическими. Чтобы было понятнее, опишу как бы это выглядело для программирования.

Написал целую статью с художественной аналогией, но при этом ничего не написал о тех самых экзотических вопросах про Verilog/FPGA/ASIC. Я не понимаю, как на это реагировать.

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

Я выше привел вопросы:

  1. "Я хочу производить цифровые схемы с помощью генетических алгоритмов. Что вы мне посоветуете изучить, чтобы я написал об этом исследование?"

  2. "Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

  3. "Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма. Я читал что это возможно с Xilinx 6200. Это хорошая тема для исследования?"

Ну и куча более банальных вещей "как вам курс XXX? Книга YYY? Плата ZZZ?" Ну и про ML конечно. "Можно я с вами серьезно поговорю, чтобы выбрать план своего изучения цифровой микроэлектроники?"

Какой смысл разбирать ячейку UltraScale если он не знает что такое D-триггер, LUT, propagation delay?

В чем прикол разгребать partial reconfigurability feature заведомо устаревшего устройства XC6200 середины 1990-х?

Итд.

"Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

И что же вы по этому поводу думаете? :)

Ну я же написал: Какой смысл разбирать ячейку UltraScale если он не знает что такое D-триггер, LUT, propagation delay?

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

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

Почему не подходит? Я читаю этот ответ как “идея плохая, у тебя недостаточно знаний, чтобы от этого был толк, займись основами”.

Вопросы у товарища в основном неконкретные:

"Мне сказали, что хорошая тема - это ... А что вы про это думаете?"

"Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма... Это хорошая тема для исследования?"

"как вам курс XXX? Книга YYY? Плата ZZZ?"

"... поговорю, чтобы выбрать план ..."

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

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

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

Вот этот один вопрос выглядит по делу.

В чем прикол разгребать partial reconfigurability feature заведомо устаревшего устройства XC6200 середины 1990-х?

Не знаю, иногда бывает проще понять какие-то принципы на технологиях старой эпохи, без новшеств.

проще понять какие-то принципы на технологиях старой эпохи

Например, как Basic vs Python, лишние сущности не давят. А уже потом, поняв принципы, всегда можно освоить актуальный синтаксис и новые методики.

UFO just landed and posted this here

Почитайте поподробней про автора, пожалуйста.

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

UFO just landed and posted this here

Крутится не только такая публика. Есть сотни студентов которые учатся по программе Школы Синтеза, которые потом идут в компании типа Syntacore / Ядро. Да и здесь в Долине по моему референсу три человека устроились в группу GPU в Самсунге (с одним я проводил время в таком натаскивании), а это высокооплачиваемые работы.

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

А вам можно только посочувствовать. Вы, в отличие от нейросети, не можете выключить себе чувства...

Ресерч нового стека занимает несколько месяцев по вечерам после работы, при том имея какой-никакой опыт. А от новичка что хотеть? Тем более программирование сейчас это не уметь hello world писать и тебя сразу на работу потом берут. А если еще навыки поиска информации и обучаемости отсутствуют...

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

Простите, но это мой потолок, не отдам

Как вы думаете, с какого вопроса вы перестанете терпеливо объяснять?

Как будто, я знаю одного идеального собеседника для этого парня. Он терпелив, доступен 24х7, имеет невероятно широкий кругозор, и, при этом, примерно такую же глубину погружения...

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

С него выйдет журналист по специфики IT. Не отказывайте ему в ответах.

UFO just landed and posted this here

А разве их всех ChatGPT не убил?

Исходя из списка вопросов не очень понятно при чём тут вообще FPGA ;)

FPGA, кто бы что ни говорил - до сих пор это всё же больше инженерия, нежели "чистое" программирование. Если человека с Си взять и посадить на "параллельный" язык, да ещё подкинуть ему переходы между тактовыми доменами или требование уложиться в немалую тактовую частоту - он будет писать сущую дичь поначалу. Начинать с "Hello world" - это больше к софту на ПК, на худой конец для МК, а ПЛИС - это лампочками помигать для начала, бегущий огонь там сделать, а потом когда SPI освоить можно и на экранчик что-то выводить в зависимости от нажатия на кнопочку...

Я просто сделал аналог его вопросов, если бы речь шла о программировании. Я согласен, что Hello, world на верилоге выглядит например так:

module my_and(input a,input b,output c);
    assign c = a & b;
endmodule


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

https://github.com/yuri-panchul/systemverilog-homework/blob/main/01_combinational_logic/01_01_mux_question.sv

Реально его вопросы звучали так:

1. "Я хочу производить цифровые схемы с помощью генетических алгоритмов. Что вы мне посоветуете изучить, чтобы я написал об этом исследование?"

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

  1. "Мне сказали, что хорошая тема - это сделать reverse-engineering ячейки UltraScale. А что вы про это думаете?"

    См. ответ про генетические алгоритмы. Какой смысл разбирать ячейку UltraScale если он не знает что такое D-триггер, LUT, propagation delay?

  2. "Я хочу заняться частичной реконфигурацией FPGA, когда меняется во время работы алгоритма. Я читал что это возможно с Xilinx 62000. Это хорошая тема для исследования?"

    Моя реакция: В чем прикол разгребать partial reconfigurability feature заведомо устаревшего устройства XC6200 середины 1990-х?

Плюс куча вопросов про сравнение плат, курсов и учебников. Ни одну плату он так и не купил.

Вот эти вопросы - это уже ПЛИСоведение! Правда реверсить UltraScale или заниматься частичной реконфигурацией не умея нормально на HDL кодить... это несколько доставляет конечно)

Если человек при таком желании за полгода умудрился не купить и не попробовать что-то типа Tang Nano 9K за 1,5 рубля... ну посоветуйте ему исследование джиттера внутреннего PLL ;)

FPGA, насколько можно понять из этих "генетических алгоритмов", нужны, чтобы отбор желаемых цифровых схем шел сразу в "железе". Это, на мой дилетантский взгляд, задача из разряда научной фантастики. Может быть, имеет смысл предложить ему реализовать минимальный генетический алгоритм для начала на симуляторе - что-нибудь типа "сделать my_xor из my_and и my_not". Было бы интересно посмотреть.

Вообще, по-своему опыту могу сказать, что порог вхождения в эту область очень высокий по сравнению с программировании. В программировании все просто - взял букварь по русту (или что там) и сразу пошел пилить ядро. А тут так не получится. Лет 6 назад купил себе плату зайлинкс 605 для хобби-проекта. Потом, при ближайшем расмотрении, оказалось, что нужно подучить архитектуру шины PCIex, архитектуру x86, написание драйверов и т.п. Это уже после собственно выучивания VHDL и подпиливания встроенного пиколинукса. Так и лежит теперь плата.

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

Потом, при ближайшем расмотрении, оказалось, что нужно подучить архитектуру шины PCIex, архитектуру x86, написание драйверов и т.п. Это уже после собственно выучивания VHDL и подпиливания встроенного пиколинукса. 

Это вы явно каким-то кривым маршрутом шли. Вы что, взяли реализацию x86 ядра на VHDL и начали его оживлять? Таким образом вы до уровня чтобы проходить интервью в электронную компанию не доучитесь. Потому что на интервью в Apple, NVidia, AMD, Samsung, Juniper итд итп спрашивают вопросы про конвейерные блоки, очереди, статический анализ тайминга, немного FSM и (для более продвинутых позиций) пересечение тактового домена, кодирования для экономии динамического энергопотребления итд. А не как мастерить на VHDL и Xilinx старую неконвейерную IBM PC XT и играть на ней в Leisure Suit Larry in the Land of the Lounge Lizards.

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

Это можно делать на разном уровне - на уровне абстрактного нетлиста (графа логических элементов и D-триггеров), на уровне RTL в HDL описаниях - или даже просто паттернов в памяти конфигурации. Но каким бы образом не пойти, у него не получится проскочить изучение основ - комбинационной и последовательностной логики с упражнениями на fpga плате, с симулятором и анализом тайминга.

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

Вводный роадмап довольно понятен - читать Харрис & Харрис или Цифровой Синтез и параллельно делать примеры на FPGA плате и домашнюю работу из вот этих двух репозиторий, которые мы сделали с сотоварищами. В общем все ссылки:

https://dmkpress.com/catalog/electronics/circuit_design/978-5-97060-961-3/

https://dmkpress.com/catalog/electronics/circuit_design/978-5-93700-282-2/

Репозитории

https://github.com/yuri-panchul/basics-graphics-music

https://github.com/yuri-panchul/systemverilog-homework

Еще пара полезных книжек:

https://dmkpress.com/catalog/electronics/cad/978-5-97060-619-3/

https://www.amazon.com/Digital-Design-Approach-William-Dally/dp/0521199506

Курс

https://engineer.yadro.com/chip-design-school/

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

Идея проекта была очень простая - вставить плату типа этой sp605 в pcie разъем "сервера x86" и кидать на её сетевой интерфейс из браузера клиента что-то вроде байт-кода в эзернет-кадрах, а плата должна была его интерпретировать в машинный код x86 и класть "прямо на процессор", минуя ОС. Результат возвращать клиенту. Что-то вроде CPU-on demand. Здорово, конечно, но, видимо, начинать нужно с чего-нибудь попроще.

Эмуляция IBM PC XT с процессором 8088 тоже прекрасно, и где-то даже ностальгия, но выглядит очень уж дидактично.

Спасибо за ссылки, попробую все это освоить.

Так же как и наоборот, человек после верилога будет писать странное на Си.

Если опыта нет - конечно. Но на самом деле, замечание справедливое. Я вот спустя 10 лет писанины только под ПЛИСы как-то взялся за небольшую и примитивную программку для микроконтроллера и ужас как меня ломало от того, что код выполняется построчно, а не как я привык - целиком за один такт. Это я даже описать не знаю как - как в другой неудобный и нелогичный мир попал) И это несмотря на то, что опыт в программировании МК у меня был, да и скрипты и простенькие программы для ПК я периодически делаю.

У меня ближайшая аналогия - учиться водить в стране с левосторонним движением после правостороннего.

p.s. много всего выполняется параллельно (запись в память, параллельные ядра, прерывания) и нужно следить за атомарностью и последовательностью городя костыли.

Просто нужна правильная ментальная модель. Код на верилоге - это функция преобразования текущего состояния (состояние D-триггеров дизайна в текущем такте) в новое состояние (состояние D-триггеров дизайна в следущем такте).

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

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

Не обязательно фрагменты, процессорные ядра вообще многим (а может большинству?) не нужны.
Вот наппример мультиплексор i2c шины на cpld Coolrunner II вполне самодостаточное устройство, и да, не требует даже тактовой частоты для работы в общем случае.

Это использование CPLD для "склеивания" шин в системе. Я понимаю такое применение, но я не ориентируюсь на людей, которые используют верилог только для таких случаев. Я работаю в команде графического процессора GPU в самсунговских телефонах, в котором больше миллиона строк на верилоге и оно все состоит вот из таких конструкций как я описал выше (конвейеры данных и шейдеров, очереди, конечные автоматы итд). Соотвественно я и оптимизирую программу обучения под то, чтобы студент мог пройти интервью на джуна в такой проект.

А для этого нужно чтобы он в голове представлял как в стадии конвейера старое состояние переходит в новое. Оно конечно не обязательно выражается парой always-блоков (комбинационным и clocked), а может состоять из графа continuous assignments, которые потом входят в D-вход D-триггера, но и в таком случае в графе нет комбинационных циклов, то есть его всегда можно представить как функцию new_state = f (old_state).

И эта "f" ведет себя как программа. Сложность для программиста чтобы представить что это происходит во всех стадиях конвейера одновременно. Но когда этот ментальный блок пробит, дальше все становится детерминированным и более-менее понятным.

В этом треде мы обсуждали обратную ситуацию, как программист плис воспринимает код под процессор.
А уж кто-как верилогу обучает и что считает более важным и на что ориентируется это дело каждого своё...

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

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

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

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

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

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

Поэтому родилась такая занятная мысль: выдавайте падавану такое задание (скажем поступила заявка), не оч. сложное и очень коварное, пусть реализует тест Бека, тест HADS и тест Люшера- на любом языке програмирования, хоть на basic хоть на java. Заодно сам пройдет ;)

Коль уж пост заканчивается грубым вопросом про психические проблемы... Скажите, а вас то что заставляет на протяжении 6 месяцев ничего не менять в вашем поведении и взаимодействии с этим человеком?) Имхо, но ваше поведение столь же удивительно, сколь и его ;)

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

Что это вообще такое? Какое-то психическое нарушение или троллинг?

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

На форуме x-plane нашел аналогичного персонажа: донимал в личке тем, что купил игру, месяца 3 занимался тем, что допиливал ее под себя путем установки модов, советовался, как конфиги настраивать, чеклисты примерял. Пересмотрел кучу видосов-учебников, как управлять PMDG737, B738-zibo. Купил всевозможные сторонние scenery (а потому как вдруг придется пролетать над Сен-Тропе), подписку на navigraph. Но так ни разу не полетал кроме стартовых учебников. Наверно, до сих пор выбирает под себя штурвал, квадрант и педали, т.к. без них не хочет портить впечатление от флайтсима. Думаю, это болезнь какая-то.

c какого вопроса вы перестанете терпеливо объяснять?

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

Если не понимаешь его - спроси, вопросы - главный инструмент в поиске ответа.

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

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

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

Добавляйте критики, осознание ошибок - первый шаг к росту, а это мой первый комментарий на хабуре :>

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

Вероятно, он имеет очень большую перспективу в сфере программирования, и прежде чем сделать шаг, он планирует свой путь на года вперёд, и ошибка на старте - будет ударом в печень.Лучше потратить больше времени на планирование, чем года на снос кривой постройки.

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

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

Вот везет же людям иметь друзей из области IT и пользоваться этим настолько не эффективно и бестолково.

Тут сам пока допрешь как работают: массивы, циклы, callback функции, перебор объектов, ООП в React, Redux в React можно кукухой поехать. Пока другие люди так бестолково используют такую возможность. Хорошо, что хоть Chat GPT придумали, совместно с курсами на YT это позволяет (не всегда) хотя бы самому себе вопрос сформулировать для дальнейших промтов.

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

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

Хотел посоветовать почитать книгу, где есть как раз пошаговое освоение плис из серии max10 на базе макетки Terasic DELite-10. А потом смотрю, кто автор статьи)

Я ещё удивился, ну надо же, как хорошо, когда написано правильно: "последовательской" вместо "последовательной")

Последовательностной. Логика последовательностей - просто меня на этом термине не послушали :-)

Прикольно. У нас была специальность САПР микроэлектроники. Проектировали платы, схемы с помощью генетических алгоритмов. Но это дипломная работа, как минимум. Начинали, конечно, с hello world) Где он только копал свои вопросы?!

Как вариант, Вы просто приятный и интересный для него человек, и он просто хотел быть на одной волне с Вами, чтобы ценили его общество тоже))

Может подкатывает так? Учитывая ваш пол и его пол, рекомендую мыло в душевой не ронять рядом с ним :)

На верилоге тяжело написать "hello world". Симулятор оно конечно неплохо, но всё-таки такой мотивации не даёт. Нужна какая-то железка. Причем не самая простая, а хотя бы с семисегментным индикатором. Посоветуйте ему купить что-то подобное. Тогда и мотивация появится.

Ну дык и советовал, и показывал платы, но он только продолжает присылать вопросы - а может такую плату выбрать? А может другую? (Я согласен что нужно начинать с платы, а не симулятора)

Нда... Тяжелый случай... У него похоже совсем не эти проблемы... Что же касается плат, моя любимая, которую я всем рекомендую для начала, это lattice ice40-hx8k breakout board. Шьется по тому же кабелю от которого запитана. На тот же кабель выведен ещё протокол UART c бортовой FTDI. Так что один кабель и на питание и на прошивку и на связь. Прекрасно дружит со свободным SDK iceStorm, весом мегабайт в 150. Единственный недостаток - нет семисегментника. Для начинающих это серьёзно подогревает интерес к обучению... Впрочем сейчас хочу свою плату. Что-то вроде вот этого https://github.com/mist-devel , но "на стероидах", со всеми моими хотелками :)))

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

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

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

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

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

UART это прекрасное упражнение, но для человека который не знает простейшего синтаксиса (порты, always-блоки, семантику блокирующих, неблокирующих и continous assignments) - это явно не первое упражнение. До UART ему нужно поделать всякие мигания кнопочками и упражнения по последовательностной логике на симуляторе типа https://github.com/yuri-panchul/systemverilog-homework/blob/main/02_sequential_basics/02_04_serial_adder_with_vld.sv

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

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

Я не согласен. Логические операции и D-триггеры можно вводить параллельно с верилогом - у меня в такого рода семинарах опыт. Конечно, если есть время, полезно для введения показать логические элементы, D-триггеры, сумматоры, мультиплексоры, приоритетные декодеры, счетчики и сдвиговые регистры на микросхемах малой степени интеграции (7400 или cmos 4000), но для этого достаточно три дня занятий, а потом точно нужно переходить на ПЛИС и показывать остальное там. А если времени мало, можно сразу на ПЛИС.

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

Ну в принципе мне кажется это даже неплохо. Изучать что-то новое по-моему нужно с крупной задачи, чуть за пределами собственных сил. Тогда автоматически изучишь всё остальное что для этого нужно. Я вот например сейчас в качестве хобби осваиваю глубокое обучение. И не стал классифицировать разновидности ирисов и опознавать рукописные цифры. А начал с книги "Глубокое обучение и игра в го", и делаю сейчас игрового бота для игры flood-it по её идеям. Может напишу здесь об этом... Что же касается UART-а, пришел я к этому когда сам был зеленым новичком не просто так. А как к средству быстро и дешево связаться с проектом, сделать нужные себе нужные инструменты отладки и т.п. Но с Вашим молодым человеком похоже проблемы совсем иного толка... Ему бы с девушкой симпатичной познакомиться... :)))

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

В том-то и дело... Проблемы у него похоже совсем не с этим... Я бы порекомендовал знакомства с девушками (кстати Ире из Новосиба привет !!! :)))), боевые искусства и экстремальный туризм. Если он в России, идеально бросить всё и уехать в совершенно глухую деревню у черта на рогах, где-то на месяц как минимум. Сам только со вторника в Москве. Ничего тут не читал, ибо был вообще без интернета и следовательно без чтения и новостей. Зато сколько дел переделал ! :)))

Блин, я себя LARP'ером бывает чувствую когда что-то пишу. Но здесь вообще какая то жесть .
Для верилога можно послать на
https://hdlbits.01xz.net/wiki/Step_one и пока прогресс не будет показывать, прогонять. Про программирование - advent of code. Пусть учится или хоть что-то решать или не тратить чужое время

Упражнения на которые я его отправил начинаются по уровню сложности не выше hdlbits, но потом идут дальше, до конвейерных блоков и очередей - см. https://github.com/yuri-panchul/systemverilog-homework

А также, параллельно с ними, занятия на FPGA плате по https://github.com/yuri-panchul/basics-graphics-music

А про вариант по выбору темы для диплома никто не рассматривал выше?

Это он по-видимому и делает, и я ему написал, что если он хочет участвовать в создании обучающих примеров и использовать созданный им пример как основу для темы диплома, то это прекрасно. Но как он собирается написать диплом без написания кода? И как он собирается писать код, если он не выучил основы технологии? Если бы он начал по моим рекомендациям делать упражнения по верилогу 6 месяцев назад (симулятор + FPGA платы) то сейчас он бы мог сделать пример использования генетических алгоритмов для генерации простых последовательностных схем. Но этого нельзя делать, если не знать что такое последовательностная схема и как ее можно мутировать. А чтобы это узнать нужно делать упражнения, например вот такое. А без упражнений можно только сделать жульничество какое-нибудь словестное с чатом гпт. Но при устройстве на работу это не пройдет.

Зачем этот пост?

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

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

Моя цель не просто мотивировать всякого, а находить для себя помощников для создания примеров для образовательных программ, которые я помогаю вести в России и других странах. Если в процессе обучения человек вырастает до уровня, когда он может пройти интервью в электронную компанию, я даю ему рекомендацию. По моей рекомендации люди устроились в Samsung, MIPS, Imagination (а потом Apple), выучились и устроились в Syntacore и другие компании.

Но что мне делать, если человек полгода не следует моим рекомендациям, а не делает даже первого шага и при этом задает мне дурацкие вопросы? Я ему сказал: потратьте 10 минут, скачайте Icarus Verilog, сделайте на нем первое упражнение, добавьте 2 строчки верилога. Теоретическая база находится в главе 4 Харрис & Харрис.

Что человек делает вместо этого? Он игнорирует рекомендацию и через некоторое время спрашивает мое мнение про FireSim (ускоритель симуляции для больших проектов) и еще дюжину продуктов такого рода. Как мне на это отвечать, если у него нет базы, отправной точки для сравнения, с которой я ему посоветовал начать? Что мне ему ответить? Так и сказать "это для больших проектов"? Или методично разжевывать для каких проектов икаруса недостаточно и почему FireSim являтся cycle functional accurate, но непригоден для оценки максимальной тактовой частоты симулированного с ускорением ASIC-а? А чем это отчается от проповеди птицам (чем занимался святой Франциск), если товарищ за полгода не удосужился сделать ни один пример ни с обычным симулятором, ни с FPGA платой?

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

Далее, зачем ему раз в месяц мне писать "я хочу с вами серьезно поговорить, обсудить план". Я ему уже дал план, почему я ему должен давать другой план? Или говорить об альтернативных планах? Чем плох мой план, что он его игнорирует и спрашивает про другой план?

Итак мой совет (который я ему повторял несколько раз, он его игнорирует и спрашивает снова):

The steps:

  1. get a cheap FPGA board,

  2. read a textbook like https://www.amazon.com/Digital-Design-Computer-Architecture-RISC-V/dp/0128200642 ,

  3. In parallel start from the first example https://github.com/yuri-panchul/basics-graphics-music/tree/main/labs/01_and_or_not_xor_de_morgan

  4. then go to the second.

  5. After https://github.com/yuri-panchul/basics-graphics-music/tree/main/labs/10_hex_counter start look to the homework exercises https://github.com/yuri-panchul/systemverilog-homework

  6. Eventually get another textbook https://www.amazon.com/Digital-Design-Systems-Approach-2012-09-17/dp/B01FIWOYVU/ and start doing exercises with pipelines and fifos.

  7. Extend to the simplest CPU cores https://github.com/zhelnio/schoolRISCV then to more complicated cores.

Do everything in small steps, but in a systematic way. After several months you will know what to do better.

Воот, видите в чем ваша проблема?

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

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

Хорошо, простой вопрос вам. Что делать с человеком, который полгода пару раз в неделю присылает сообщения, которые включают: 1. вопрос что я думаю про технологию XYZ, при том что я знаю, что короткий ответ он не поймет, а длинный c отсылками на учебники не будет читать (пример: FireSim выше), 2. рекомендации игнорирует и вместо этого спрашивает мнение про альтернативы, 3. спрашивает когда я могу выбрать время чтобы "серьезно поговорит? Разговор с анализом его уровня и сравнениями учебников был полгода назад и с тех пор никакой новой информации не появилось, потому что он не сделал ни одного упражнения ни по какому учебнику - ни по рекомендованным, но по альтернативным.

Впрочем после всех комментаторов я вывод для себя сделал: на любой новый вопрос писать:

"Для того чтобы вы поняли мой ответ, у вас должна быть база. Рекомендации как получить базу я уже дал (см. ниже). Альтернативные способы получения базы ничем не лучше. Получать базу с помощью новых неотлаженных тулов неэффективно, потому что вы будите натыкаться на больше проблем, чем с обычными тулами. На ваши дальнейшие ответы я буду отвечать, когда вы сделаете упражнения 1 и 2 с симулятором, а также приобритете дешевую FPGA плату, запустите на ней примеры 1-5 и 7-10 и пришлете мне видео запуска".

Интересно, я после прочтения вашего поста примерно за полчаса при поддержке ChatGPT установил компилятор и утилиты для Verilog. Скомпилировал пример &, посмотрел результаты, подумал "а чё, круто!", вспомнил университет и практику по дискретной математике, подумал, что бы такого забабахать, и какую пользу это принесёт, потому что в железе всё равно не воплотить в домашних условиях.

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

Если у вас нет цели стать дизайнером чипов и перед вами не стоит задач типа обработка потока данных на FPGA, которые приходят каждый такт (поток пакетов с транзакциями для high frequency trading, звук, сигнал радара), то да, STM32 удобнее.

*** отому что в железе всё равно не воплотить в домашних условиях. ***

Можно на FPGA но это полезно только для специфического класса задач, а также для обучения на ASIC дизайнера.

*** Скомпилировал пример &, посмотрел результаты, подумал "а чё, круто!", вспомнил университет и практику по дискретной математике ***

Пример с & к сожалению не помогает оценить дух деятельности, а даже вводит в некоторое заблуждение, потому что начинает казаться, что там все комбинационная логика, хотя там основа - это схемы с последовательностной логикой (то есть комбинационная + элементы состояния / D-триггеры), и уж из них строятся структуры следущего уровня - конечные автоматы, конвейеры с очередями итд.

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

Sign up to leave a comment.

Articles