Pull to refresh

Полгода задает изощренные вопросы как начать программировать, но не написал даже Hello, world

Reading time3 min
Views48K

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

"Сесть за компьютер, написать и запустить программу Hello, world. Одновременно купить книжку с описанием языка и базовых приемов и читать ее в общественном транспорте, перед сном и в приемной у зубного врача. Периодически садиться за компьютер, написать и отладить программы: сортировки массива, игры Жизнь, ханойских башень итд. С выводом на текстовый терминал, окно в GUI или веб-страницу - по вкусу. Далее вы поймете в какую сторону копать или не идти в это дело вообще."

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

1. "Как вы думаете, что лучше - объектно-ориентированное программирование на Rust или функциональное программирование на хаскеле? А может попробовать Smalltalk как самый чистый объектно-ориентированный? Или Simula-67, с которой объектно-ориентированность начиналась?"

2. "Мне посоветовали изучать компиляторы. Как вы думаете, правильно ли было бы для меня взять в качестве учебного проекта выделение регистров с помощью окраски графа? И стоит ли делать это на Лиспе? И какой лисп выбрать - с CLOS или Schema? Мне говорили Schema изучают студенты в Беркли. И может перед написанием алгоритма выделения регистров выучить ассемблер? Но какой? Intel 8051 годится? С ним до сих пор Сименс чипы выпускает."

3. "Я пока не купил компьютер, чтобы начать учиться программировать. Как вы думаете, что лучше покупать если я после C/C++ захочу учить CUDA - компьютер Apple с процессором M2 или китайский ноутбук с процессором RISC-V и линуксом? Стоит ли к нему докупать плату с транспьютерами? Или лучше учить не CUDA, а OpenCL? Или может перед ним выучить OpenGL или Vulkan? Может я пойду в игровое программирование и мне нужен специальный игровой компьютер?"

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

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-х?

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

Tags:
Hubs:
Total votes 84: ↑68 and ↓16+66
Comments263

Articles