ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
970657 Топик полностью
fk0, легенда (15.01.2020 02:14, просмотров: 207) ответил Evgeny_CD на Есть и другой путь. Пока эфимерный - другие способы обучения и использования С++.
Чтоб написать строку, нужно понимать, что ты хочешь написать. В этом-то и затык. Подсказки микрософт в студии уже давно сделал, толку-то, оно ж не знает что ты хочешь. Ты сам не знаешь, если тебе подсказки нужны. Дело ж не в том вообще, чтоб использование C++ изучить. Это как раз можно, в основной массе. Практика нужна, только книги читать бесполезно, набьёшь шишек и научишься. Но тут следующий этап, куда более серьёзный, чем C++ кардинально отличается от C#, Java, Go и чего угодно. Это язык совершенно более высокого уровня на самом деле, просто он родился вообще случайно, его в этом направлении практически не развивали, разве что в последние годы были сделаны некоторые шажки в нужном направлении. Это -- метапрограммирование. Я уже писал, что C++ многомерен, на самом деле там внутри несколько не связанных между собой языков: C-препроцессор, "С с классами", декларативный язык позволяющий вычисления в пространстве типов (симбиоз компилятора "C с классами" и системы шаблонов), императивный язык constexpr-выражений позволяющие вычисления в момент компиляции (последний нужен в основном для того, чтоб обойти неудобства декларативного языка). На самом деле, возможно стоило бы всё откинуть и начать с начала, ибо концепция уже начала более-менее чётко прорисовываться: система типов, это ничто иное как совершенно отдельный декларативный язык с элементами pattern-matching'а и логического программирования который служит для формирования на основе заданных шаблонов (не в контексте C++, а скорей как неких заготовок кода) и по задаваемым правилам кода на императивном языке, который уже компилируется в машинный код. Т.е. помимо компиляции императивного кода введена новая важная фаза: формирование данного кода по некому набору правил. Причём программист на самом деле может и не знать какой код и как сформируется, и не уметь сам найти решение, которое может быть достаточно сложным для понимания человеком. Программист лишь задаёт правила, а компилятор ищет решение. Вот суть. Вот почему язык -- декларативный и почему логическое программирование. Программист должен иметь возможность вводить новые понятия и в терминах введённых понятий задавать правила по которым может выводиться программа, решение же ищет компилятор. Повторюсь, такими свойствами C++ стал обладать совершенно случайно. Оно само себя родило, никто и не предполагал. И сейчас C++ находится под огромным грузом совместимости со всем избыточным багажом накопленным за последние 20 с лишним лет. Повторюсь, возможно стоило бы откинуть этот багаж (не)совместимости и начать с начала, уже осознанно разрабатывая "надъязык" служащий для формирования программ на обычных императивных ЯВУ, в роли которых запросто могут выступать и голый C, и паскаль, и ассемблер, и C#, и Java, что угодно, даже старый C++. При этом вполне возможно, может быть рационально смотрелась бы адаптация уже имеющихся декларативных или функциональных ЯВУ (Haskell, Prolog) для такой задачи, как формирование кода на императивном языке. Если возвращаться к вопросу обучения, то это вряд ли вариант для студентов при любом раскладе. Может только если в составе более узкого фреймворка ориентированного на ограниченный круг задач (полуавтоматизированное формирование программ из области ML -- практически уже...)
[ZX]