Понял, спасибо! Я думаю, в компиляторах тайпчекинг - не самоцель, он там для собственно представления данных изначально появился. Вообще, у JetBrains как-то получается хорошие IDE делать, несмотря на "встроенную" в компилятор Java типизацию. И да, для этого половину компилятора приходится пере-реализовать, об этом Андрей Бреслав на одной конференции рассказывал. Кстати, лучшая на мой вкус IDE для Python - тоже от JetBrains.
Я конечно не предлагаю всерьёз начинать изучение программирования с Ассемблера, но у меня есть занимательный пример из жизни. Однажды мне ассемблеро-подобный псевдокод (нумерованные строки, команда перехода на конкретную строку) помог объяснить концепцию цикла глухим школьникам. Наверно, жесты над таким текстом получились выразительные.
Про действительно ли нужно сразу вводить разные целые типы данных - дискуссионный вопрос, но могу по опыту сказать, что это точно можно, и не создаёт заметной ступеньки в обучении. Н сильно сложнее, чем просто концепция типов данных. Может даже помочь пониманию. А вообще - было бы прикольно чери-пикать отдельные дизайн-решения из разных языков, жаль что такого нет.
Два? Обычно их гораздо больше. Идея автоматизировать выбор формата данных - понятна (полезность для обучения пока отставим). Но приводит к огромному оверхеду из-за избыточности (как неотменяемая длинная арифметика в Python). И к постоянным перекодировкам, со всеми вытекающими и по производительности, и по надёжности.
Действительно нет, я про указатели не вспомнил, спасибо за дополнение. Концепция важная, хорошо, когда её можно показать, не изучая для этого новый язык программирования. Но ещё хорошо, чтобы можно было бы без них и обойтись как можно дольше (как в Pascal и есть). Уж больно дорого они даются (и не только в плане обучения).
Прям нахлынуло :) Спасибо за приятные воспоминания! Первой набранной (потоком, без права на ошибку) в машинных кодах программой у меня был HEX-редактор. С его помощью можно было в следующих программах (тоже в маш.кодах конечно) вернуться и исправить ошибку, а не перенабирать всё с начала.
"Джетбрейнс ушла с рынка РФ" -- факт, это и с Java проблемы создаёт. Но "Community Edition" вроде доступна, и есть например отечественная OpenIDE от Axiom JDK.
Универсальные контейнеры и обобщенные функции вполне себе есть и в статически типизируемых языках (generics). И просто как забавный факт, вы удивитесь, что стало с функцией sort в последней версии Python.
Так точно можно в PascalABC.NET 3.11, где это и писалось. Наверно, право этих строк быть в блоке исполняемых операторов от того, что это ещё и вычисление начальных значений переменных (совмещённое с объявлением, да). Ещё тут может удивлять отсутствие яного указания типа -- так можно, если тип однозначно выводится из присваемого значения.
Спасибо, что дочитали до этого места! И за мнение про Котлин конечно тоже спасибо! Со многим готов согласится, и перебор с сахаром, и сложность, особенно на стыке с Java, всё есть. А как взвешивать плюсы и минусы - это можно по разному, и сильно от области применения зависит. Для меня например "Быть better-java заменителем" - вполне себе аргумент, если он действительно лучше.
Интересное наблюдение про `сделай "x :x + 1`. Мне не бы в голову не пришло, что эта особенность синтаксиса может кем-то восприниматься как полезный методический инструмент. Если не секрет, расскажите про свой опыт преподавания программирования, пожалуйста. Какой возраст обучаемых, направленность, какие-то подробности?
Не уверен, что к месту, но в Java есть OSGI. Если новый тип имплементит старый интерфейс, вполне может прокатить.
Понял, спасибо!
Я думаю, в компиляторах тайпчекинг - не самоцель, он там для собственно представления данных изначально появился.
Вообще, у JetBrains как-то получается хорошие IDE делать, несмотря на "встроенную" в компилятор Java типизацию. И да, для этого половину компилятора приходится пере-реализовать, об этом Андрей Бреслав на одной конференции рассказывал.
Кстати, лучшая на мой вкус IDE для Python - тоже от JetBrains.
Я конечно не предлагаю всерьёз начинать изучение программирования с Ассемблера, но у меня есть занимательный пример из жизни. Однажды мне ассемблеро-подобный псевдокод (нумерованные строки, команда перехода на конкретную строку) помог объяснить концепцию цикла глухим школьникам. Наверно, жесты над таким текстом получились выразительные.
Про действительно ли нужно сразу вводить разные целые типы данных - дискуссионный вопрос, но могу по опыту сказать, что это точно можно, и не создаёт заметной ступеньки в обучении. Н сильно сложнее, чем просто концепция типов данных. Может даже помочь пониманию.
А вообще - было бы прикольно чери-пикать отдельные дизайн-решения из разных языков, жаль что такого нет.
Приведите пожалуйста пару примеров таких целей обучения.
Два? Обычно их гораздо больше.
Идея автоматизировать выбор формата данных - понятна (полезность для обучения пока отставим). Но приводит к огромному оверхеду из-за избыточности (как неотменяемая длинная арифметика в Python). И к постоянным перекодировкам, со всеми вытекающими и по производительности, и по надёжности.
В последнем абзаце не понял, как проверки в компиляторе мешают разработчикам IDE (речь же об этом была)? Ну и главная интрига - что означает "PABS"?
Действительно нет, я про указатели не вспомнил, спасибо за дополнение.
Концепция важная, хорошо, когда её можно показать, не изучая для этого новый язык программирования.
Но ещё хорошо, чтобы можно было бы без них и обойтись как можно дольше (как в Pascal и есть). Уж больно дорого они даются (и не только в плане обучения).
Вот да, всё обещают. А в Котлине корутины есть давно, и перевести на них проект с Reactor было счастьем.
Предположу, что ситуации, когда не возможно определить тип элементов коллекции довольно далеко от обучения программированию.
А в Питоне меня в своё время поразил переход на key-functions вместо компаратора (ну или интерфейса Comparable, если бы такое там было).
Прям нахлынуло :) Спасибо за приятные воспоминания!
Первой набранной (потоком, без права на ошибку) в машинных кодах программой у меня был HEX-редактор. С его помощью можно было в следующих программах (тоже в маш.кодах конечно) вернуться и исправить ошибку, а не перенабирать всё с начала.
"Джетбрейнс ушла с рынка РФ" -- факт, это и с Java проблемы создаёт. Но "Community Edition" вроде доступна, и есть например отечественная OpenIDE от Axiom JDK.
Универсальные контейнеры и обобщенные функции вполне себе есть и в статически типизируемых языках (generics).
И просто как забавный факт, вы удивитесь, что стало с функцией sort в последней версии Python.
Так точно можно в PascalABC.NET 3.11, где это и писалось. Наверно, право этих строк быть в блоке исполняемых операторов от того, что это ещё и вычисление начальных значений переменных (совмещённое с объявлением, да). Ещё тут может удивлять отсутствие яного указания типа -- так можно, если тип однозначно выводится из присваемого значения.
Тут что-то не так?
Спасибо за отзыв, сочувствую!
Отдельно обидно, что в разрешенных на ЕГЭ языках (С#, C++, Pascal, Java, Python) нет Котлина.
Спасибо, что дочитали до этого места!
И за мнение про Котлин конечно тоже спасибо!
Со многим готов согласится, и перебор с сахаром, и сложность, особенно на стыке с Java, всё есть. А как взвешивать плюсы и минусы - это можно по разному, и сильно от области применения зависит. Для меня например "Быть better-java заменителем" - вполне себе аргумент, если он действительно лучше.
Спасибо за поддержку!
Да, "высота" порога входа также определяет, куда с неё можно "опуститься" :)
Интересное наблюдение про `
сделай "x :x + 1`. Мне не бы в голову не пришло, что эта особенность синтаксиса может кем-то восприниматься как полезный методический инструмент.Если не секрет, расскажите про свой опыт преподавания программирования, пожалуйста. Какой возраст обучаемых, направленность, какие-то подробности?
Забавно, да.
Среди кириллических языков программирования у меня есть фаворит https://github.com/tsoding/good_training_language