Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Что за тенденция обучать алгоритмизации используя высокоуровневые языки?
алгоритмы, требовавшие 10N операций были легко отличимы от алгоритмов, требующих 20N
У нас тут давно уже оптимизирующие компиляторы, фрагментация heap, кэши процессора разных уровней.А я о чём писал? Да, в сегодняшнем мире отличить 10N от 20N уже не так-то просто, хотя ещё совсем недавно это было тривиально. Хотя нет, вру — возьмите Arduino и будет вам «щастя».
Скажите — какие конструкции в Go вам неясно как устроены?Ну если навскидку, то:
Вообще Вы про Go пишете, как о чем-то Python-подобном.Ибо так оно и есть. Недаром на Go люди массово переходят с Python'а и весьма неохотно — с C++.
Хотя Go является улучшенным Си.А что это меняет? Objective C тоже является «улучшенным C» и вообще с ним совместим (в одну сторону), однако «магии» в нём — почти столько же, сколько в Python'е или Go. И его использование — сопряжено с теми же проблемами.
Недаром на Go люди массово переходят с Python'а
Более того, Гугл неоднократно говорил, что создавал Го на замену Питону.
Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++.
Go задумывался как низкоуровневый язык — последователь C/C++, но фактически получилась где-то менее удобная, где-то более удобная альтернатива Ruby и Python'у.
Ибо так оно и есть. Недаром на Go люди массово переходят с Python'а и весьма неохотно — с C++.
«дотягиваются» до железа
Map'ы. Весьма удобная конструкция — но вы знаете как оно устроено «внутри»? А User's Guide'е от пресловутого Турбо Паскаля Turbo Pascal объяснял как строки создаются, обрабатываются и передаются в функцию и из функции.
А для тех, кто хочет либо заниматься программированием в будущем, либо участвовать в олимпидах, можно отдельно сделать факультатив с C/C++.
Зачем обучать школьников языкам, которые очень плохо спроектированы, провоцируют создание ошибок и при этом очень сложны в изучении.Потому что это — низкоуровневые языки, где вы можете контролировать всё (ну, по крайней мере, всё, что позволяют контролировать современные CPU).
Здесь куда лучше подойдут Go, Java, C# и т.п. языки, которые учли ошибки С++ и при этом тоже реально используются в разработке.А смысл какой? Все эти языки — языки высокого уровня, в них куча дырявых абстракций, как железо исполняет вашу программу они вам понять не помогут.
Да они один стандарт только и будут читать на этих факультативах.А C# вы тоже начнёте с изучения спецификации? В ней, между прочим, полтысячи страниц и при этом она ещё и описание стандартной библиотеки не включает (в отличие от стандарта C++)!
Я к тому, что пускай C++ учат в университетах. А в школах это отобьет всякий интерес.Зависит от его наличия, в общем-то. По крайней мере при изучении C/C++ у вас есть простая и ясная цель — вы можете заставить комьютер делать всё: можете сделать программу работающую «на голом железе», а можете — взять и изменить Web-браузер. Это — весьма сильная мотивация. А вот какая цель учить несколько языков, где вас «к железу» не пускают — не очень понятно.
Потому что это — низкоуровневые языки, где вы можете контролировать всё
А кто вам сказал, что я поднимаю low-level в приоритет?
Проблема с фундаметальными, низкоуровневыми, знаниями в том, что их нельзя выучить когда «будет надобность»
И что же мешает человеку, умеющему писать алгоритм поиска в ширину на Паскале, взять книжку по ассемблеру или курс на курсере по устройству процессоров, и углубиться как угодно подробно в любую тему?Вы издеватесь или действительно не понимаете? Это когда у него него совещания по четыре раза на дню и начальник огонь изрыгает он будет брать курс на курсере по устройству процессоров?
Вы, когда написали, что изучать программирование нужно с игрушек для понимания ассемблера.Я сказал, что это нужно делать если вы хотите получить хорошего программиста. Если такой цели не ставится — то, разумеется, в эти дебри знать не нужно, нужно уметь пользоваться существующими библиотеками и уметь как-то их «скотчем скрутить» для получения нужного вам результата.
Большинство молодых программистов на ява/c# сейчас как раз относятся к типичным пользователям фреймворков.
Синтаксис языка Go схож с синтаксисом языка Си, с отдельными элементами, заимствованными из Оберона и скриптовых языков. В коде на Go очень мало точек с запятой — как точку с запятой Go трактует конец непустой строки (при определённых условиях). В результате этого в ряде случаев нельзя использовать перенос строки, например, в таком:
func g() { // НЕВЕРНО }
void g()
{
}
del. Не туда
Go как первый язык программирования для школьников