Ссылки из видео: Самоучитель по JavaScript: www.crunchzill... Энциклопедия профессора Фортрана: djvu.online/fi...
Пікірлер: 11
@huskyfromalaska7647Ай бұрын
Боже, спасибо огромное! Читаю книгу по С# от Эндрю Троелсен, Филипп Джепикнса. Не все моменты понятны. Нашел альтернативную трактовку понятий в твоих видео. Очень классно рассказываешь и на понятных примерах. Спасибо!!!
@ПубгМобилАй бұрын
Благадорю за столь хорошее объяснение
@올래나Ай бұрын
Ура-ура! Наш 왕 (ван) засветился. И галочки меняют цвет на зеленый. 감사합니다!
@drone_talesАй бұрын
Блин, дядька, какая же у тебя каша в голове. Начнем с начала. Подпрограммы были всегда. Возможность вызова подпрограмм присутствует в любом языке программирования. В ассемблере, C, C++, Java. Даже в GCODE, который ты приводил в качестве примера, и там есть возможность писать и вызывать подпрограммы. Что такое подпрограмма? Это, как следует из термина - маленькая законченная программа, выполняющая некое конкретное действие. Например, подпрограмма вычисления квадратного корня. Программист может использовать как "встроенные" (или библиотечные) подпрограммы языка, так и написать свои для решения своих задач. Ты правильно заметил, что в подпрограммы выносят код, который часто повоторяется. Функции и процедуры. Функции и процедуры это тоже подпрограммы. Отличие в том, что процедуры не возвращает значение. Функция - возвращает. Пример: вычисление квадратного корня - функция. Рисования круга - скорее процедура. Не все языки программирования явно различают функции и процедуры. Часто говорят, что, например, в ассемблере нет функций (там все процедуры). А в си-подобных языках нет процедур - там все функция. Хотя по факту что в ассемблере что в си-подобных языках - есть и то и другое. Паскаль же явно различает процедуры и функции. Подпрограммы могут быть собраны в "библиотеки" (это такие специальные файлы, в которых содержится набор процедур и функций выполняющих некие логически связанные действия). Например функции вычисления корня, синуса, косинуса могут быть собраны в одну библиотеку. Для чего? Чтобы их было удобно использовать в разных программах. Однажды написав библиотеку вы легко можете ее "подключить" к другой своей программе или передать другому программисту. Подпрограммы могут принимать "параметры". К примеру у функции (подпрограммы) вычисления корня есть один входной параметр - значение, из которого нужно вычислить корень. И она возвращает значение (а значит это - функция) - результат вычисления корня. У подпрограммы рисования круга может быть три параметра: координаты центра и радиус. Так как значение не возвращается, то это - процедура. Теперь про методы Методы класса - это такие же точно подпрограммы, как и все остальные за буквально несколькими отличиями. Во-первых, методы принадлежат классу. Во-вторых, методы работают только с данными (полями) класса. Естественно, это не строгие ограничения. Никто не запрещает написать метод класса, который будет образаться к глобальным переменным и вызывать подпрограммы не принадлежащие классу. Но обычно так не делают. Для того, чтобы понять, почему так, нужно написать еще страниц 10 про классы. Не совсем понятно что значит "написать функцию в теле класса"? Они и так все пишутся в теле класса. Есть языки, где реализация может быть описана в теле класса. Есть где реализация отделена от декларации. Есть - где можно и так и так. Сишные шаблоны - так там только в теле шаблона реализация пишется. В общем дядьке, не обижаяся, но тебе еще рановато других учить (я помотрел твое видео про классы - там тоже довольно все "кашеобразно".
@FirinorHisimeonАй бұрын
Спасибо за разъяснение) 1) "Блин, дядька, какая же у тебя каша в голове." Так никто не запрещает содержать кашу в голове) 2) "Подпрограммы были всегда." Были времена, когда подпрограмм не было. Их придумали уже после появления первых компиляторов. (Но это не точно) 3) "Функции и процедуры это тоже подпрограммы. Отличие в том, что..." Я специально решил в этом видео смешать Подпрограммы, Функции, Процедуры и Методы в единое понятие. Хотелось сделать видео попроще. Извиняй уж) 4) "Не совсем понятно что значит "написать функцию в теле класса"? Они и так все пишутся в теле класса." Разве? А как же методы расширения?)
@drone_talesАй бұрын
@@FirinorHisimeon 1. Никто. Зачем ее нести в массы? 2. Ключевое слово - ассемблер. Читай - машинные коды. Обработчики прерываний тоже можно рассматривать как частный случай подпрограммы. 3. Ну хотябы вскользь упомянуть стоило. 4. Ну я сразу написал что данное выражение я не понял. Что значит "написать функцию в теле класса"? И привел пример, как я это понимаю: есть языки с раздельной декларацией и реализацией (Pascal/Delphi). Есть, где реализация "совмещена" (с#, Java). А есть где можно и так и так (C++). Методы расширения - обычные классовые методы. Ну либо статические, здесь кому как нравится. Они скорее похожи на интерфейсы с реализацией и хитрым связыванием. Собственно, перегрузка операторов из той же оперы. Просто связывание идет не через полиморфизм и наследование, а через RTTI и классовые типы.
@FirinorHisimeonАй бұрын
Нравится мне, что ты делаешь наводки, для людей, которые посмотрят это видео и прочитают комментарии) Красава @drone_tales! А от себя могу сказать - просто воспринимай это видео, как ещё одну точку зрения)