← Образование по computer science для начинающих
Обсуждение
Читать и комментировать в ЖЖ ↗
Замечу, что ссылка на пиктомир : https://piktomir.niisi.ru/
Комментарий
Хорошо зафиксированная структура данных в алгоритмах не нуждается.
Комментарий
Это редирект туда. Но старая ссылка и впрямь сбоит. Я поправил, работает с www: http://www.piktomir.ru/
Комментарий
Вот! А этому не учат вообще. Весь курс школьного программирования крутится вокруг управляющих конструкций сначала и пяти вариантов сортировок в конце.
Комментарий
Ну, я не умею детей монадам учить. Этому легко учить того, кто или прошел курс алгоритмики и успел понять, как это скучно, или занимался много разной математикой.
Комментарий
Питон для меня выглядит настолько внезапно интерпретируемым, что идея изучать на нем алгоритмы кажется странной - можно, конечно, считать сложность выполнения понятием целиком абстрактно-математическим, но это как-то слишком свежо. А при попытке подойти практически время выполнения ведет себя как-то очень неясно, и, что хуже, мне вот не удается разъяснить происходящее даже гуглом и документацией ): Наверное, я не умею его готовить, но мне современный питон кажется просто "удобным" средством дать подергать за АПИ на библиотеки на С, как в случае с машинным обучением. Причем структуры данных там так интересно реализованы, что производительность по памяти и/или времени при попытке сделать шаг за туториал буквально-таки расстреливает (:
Это веселье все сейчас в таком состоянии, что взрослые-то с трудом разбираются, куда уж восьмиклассников учить. И да, между сортировкой пузырьком и ответом на вопрос, какого фига твой маленький скрипт для обработки небольшой кучки данных сожрал всю память, закусил свопом, окуклился и никуда не движется уже пятый час - пропасть, заполненная в основном stackoverflow (:
Комментарий
Это у вас развёрнутое описание проблемы двух языков, из-за которой была выдумана Julia. Julia обладает сравнимой с Питоном выразительностью, или даже чуток получше (но не объект-ориентирована), а ещё в ней можно по-старинке заглянуть в код на уровне LLVM или даже машинном языке, если очень хочется, а скорость как у Сей и стык с Сями в обе стороны родной (аки твой Фортран). Как раз язык для любителей алгоритмов и их отладки. Ну, и ещё много всяких других штучек, типа "прямого переноса мат.нотации, прямо с греческими буквами".
Но вокруг Julia сейчас учебная пропасть, я её как раз живописал в посту. Пахать, пахать и пахать, чтобы эту пропасть как-то замостить.
Комментарий
а скорость как у Сей
Это, мягко говоря, не так. Julia тормознее даже Python порядка в 10 раз.
Комментарий
Я думаю, тут какое-то недоразумение. Например, в версии 0.3 при первом проходе по библиотеке код компилировался, это иногда влияло на тесты.
Вот тут в конце странички бенчмарк (старой, правда, версии. Сейчас 0.4.6 уже): http://julialang.org/
Комментарий
Встряну и тут со своими старыми учителями.)))
Эдсгер Дейкстра рулит для логики. "дисциплина программирования"
Помню, я удивил программиста его охраняемыми командами.
Который, в свою очередь удивился ошибкам компилятора...
"знание бейсика это детская болезнь типа поноса"(с)
Комментарий
Огромное количество онлайн курсов по перечисленным в топике областям знаний. Доступных как в режиме "просто посмотреть бесплатно лекции" (прямо с ютюба), так и с нескольких платформ в виде онлайн курса с проверкой заданий (иногда бесплатно) и (после оплаты) выдачей сертификатов. Да 90% доступно на английском, но он обязателен в информатике; и чем дольше оттягивать момент начала его использования, тем хуже.
Что касается разрыва с школьным-дошкольным, то у sicp была специальная серия "Маленький схемер" (The Little Schemer, The Seasoned Schemer (MIT Press) ) которая готовила к основному курсу.
Комментарий
Про все эти онлайн курсы известно, но количество, качество и проверка заданий в них -- вот лимитирующий фактор.
Про The Little Schemer, The Seasoned Schemer и The Little Prover -- это спасибо, я погляжу. Лиспы разные нужны, лиспы разные важны. Пройти один и тот же SICP на двух-трёх языках -- это может быть самое то, что нужно, в голове тогда точно останется общая часть, вынесенная из языков "за скобки". )))
Хотя в восьмом классе это может быть и немного рановато, но весь пойнт моего поста в том, что после каждого курса идёт резкий обрыв, и хочется иметь хоть какой-то пунктир "вперёд". SICP -- это, безусловно, "вперёд".
Комментарий
Рискну спросить - в Джулии есть работа с инвариантами цикла?
Если нет, то этот язык отстой и шаг назад в спагетти программирование.)))
Комментарий
Принципы тут: https://arxiv.org/abs/1411.1607
Нужно также учесть, что Julia существенно ориентируется на параллельные алгоритмы, так что в ней всё чуток посложней уже, чем во времена Дейкстры.
Комментарий
Понятно. "Сложности" замели под ковер.
Программистам инварианты не дают.
Возможно, они внутри Julia и наружу сообщают об ошибках.
Дело вкуса, но я предпочитаю понимать что я делаю и почему мой цикл не заканчивается.
julia> for i = 1:2, j = 3:4
println((i, j))
end
Нееее. ШАГ НАЗАД. Ерунда, а не язык.
Комментарий
Поигрался в пиктомир - он не провоцирует возникновения рефлекса оптимизации алгоритма! Наоборот, можно слепить неоптимальный алгоритм, который с большим оверхедом закрывает задачу и так сойдет! :)
Ребенок с самого начала привыкает так думать!
В этом плане программируемый советский лунный трактор был в разы интересней.
Комментарий
>> по-возможности, чтобы этот тренинг проходил без дорогого времени учители и родителя.
если исходить из парадигмы "цель жизни - воспитать детей так, чтобы они сумели воспитать своих детей", то лучше отдавать время детям - за компьютером, спортом и т.п.
мои мне уже в скандалах заявляли: "Я как папу тебя не воспринимаю! Ты или на работе, или в компьютере!"
О своем постижении ИТ:
в 15 познакомился с книгой Гутер, Полунов "Математические машины", где прочитал все от принципа действия до структурных языков программирования
В 21 нормально сдал программирование на FORTRAN, улучшал книжные программы для микрокалькулятора
В 24 взяли в КИВЦ программистом на персоналки
Наиболее понравившиеся пакеты:
Еврика от Борланд
МикроПРИЗ в комплекте ПК ЕС ЭВМ 1840
Пошаговые отладчики ассемблерного кода (DEBUG) и дизассемблеры (Sourcer)
MathLab
Сыну использовал CUDA, обучающую программу Кукарача (правда, в задания его не погружал), кое-что писал сам
Кукарача: http://robotlandia.ru/abc4/executor/coc/help/index.htm
Комментарий
только что прислали презентацию Xamarin от Microsoft под все платформы: https://channel9.msdn.com/Events/Build/2016/B836?wt.mc_id=DX_836588&cr_cc=200819468
формы, медиа, графика 2D, 3D под все основные платформы
Комментарий
Насколько я понимаю предыдущего комментатора, претензия у него не к скорости, а к не прогнозируемости потребления ресурсов (вычислительных и по памяти). Я не знаю, так это или нет в Julia, но в традиционных языках, на котором учат программированию, зависимость скорости выполнения от алгоритма и структур данных явная и прогнозируемая.
Есть проблема, что высокоуровневые языки и быстрое железо разлучают писать оптимальные программы. Даже не так, не просто разучают, а вообще этот вопрос (оптимальности) выпадает из контекста, о нем просто не задумываются.
Комментарий
Вот как раз оптимизация кода -- это главный вопрос на Julia. В языке тщательно документировано, как следует писать код, чтобы он был оптимальный по памяти-скорости, очень много текстов по разъяснению сложных моментов -- Julia ведь предназначена для вычислительных алгоритмов прежде всего, т.е. проблемы скорости, памяти и параллельности считаются главными. Как раз вопросы computer science (мощность языка, расширяемость языка) отходят на второй план -- но после того, как "люди фортрана и матлаба" очаровываются Julia, они находят, что эти вопросы "языка программирования общего назначения" тоже удивительно тщательно проработаны.