Это прям сложный вопрос, да?
для моего уровня сложный))))
Если изучить какую-то базу
Вернусь к основной мысли: я могу программировать на любом языке, потому что я программирую не на языке.
Сразу несколько уточняющих вопросов:
•Является ли это обычным? Мне кажется, что нет. Мне кажется, что большинство программистов программирует на каком-то одном языке (нескольких языках). Для меня это странно, что-то вроде привязывания палок к ногам, чтобы колени не гнулись. Ведь «… ишпанским языком с богом, французским с друзьями, немецким с неприятелями, итальянским с женским полом…».
•А на чем я программирую? У меня есть точный и бесполезный ответ: «на лексиконе программирования». Помните, анекдот про заблудившийся вертолет, который подлетает к небоскребу с плакатом: «Где мы?» В ответ, после некоторой суеты, в окно небоскреба выставляют ответный плакат: «Вы в вертолете!» Вот это такой же точный и бесполезный ответ, как и про «лексикон программирования». Если же попробовать все же ответить, то ответ будет примерно таким: я изначально думаю и делаю разработку в достаточно общих понятиях, которые потом транслирую на конкретный язык программирования и конкретные библиотеки/компоненты/фреймворки…
•Почему я так программирую? Вот тут ответ у меня вполне обоснованный: я компиляторщик, с опытом разработки компиляторов с разных языков и на разные платформы. Я умею видеть суть за туманом и синтаксическим сахаром. Я понимаю, откуда растут ноги у решений, принятых разработчиками языков. Плюс к этому, я изучал историю компьютеров и языков программирование.
Какие же интересные выводы мы можем сделать из этих вопросов/ответов:
•Не буду акцентировать внимание на очевидной для меня и думаю, что не столь очевидной для многих мысль, что обучение IT должно включать в себя историю программирования и, обязательно, несколько принципиально разных языков программирования, например, вот такую троицу: Smalltalk, Forth, Oberon и плюс к ним Scratch. А уж потом те языки, что сейчас в моде. Я не настаиваю именно на этих языках, это всего лишь мои личные предпочтения и выражение уважение к их авторам/разработчикам.