LINQ 'em all!

Иногда технологии развиваются. Иногда они развиваются быстро. Гораздо быстрее, чем система образования. Гораздо быстрее, чем пишутся книги. Слишком быстро.

Когда-то программист без знания ассемблера не являлся программистом. Потом, таковой программист уже не считался программистом (в кругу тех, кто ассемблер знал). Потом знание ассемблера уже перестало быть необходимым для того, чтобы считаться (и по факту являться) программистом. Теперь, с развитии кроссплатформенных технологий, на ассемблерах реализуется лишь очень узкий (сравнительно с оставшимся набором задач) круг задач, связанных с железом.

Это нормально. Время меняется. Автомобили сменяют кэбы, гребной винт вытеснил парус, патрон похоронил стрелу. Устаревшие технологии становятся уделом энтузиастов и узких профессионалов в тех немногих сферах, где без них нельзя. Кто следующий?

В ИТ — это подход к программированию через написание алгоритмов. Т.е., те многочисленные умные слова и бесчисленные задачи, которые мы с вами решали на первых курсах университетов, и которыми нашим студентам до сих пор усиленно забивают голову. Почему пришел их черед уходить в небытие? Да просто потому что задачи, решаемые с помощью циклов, условий, рекурсии и прочих алгоритмических трюков, расписанных Д.Кнутом в знаменитом трехтомнике, в их большинстве можно решить с помощью современных средств разработки без собственно алгоритмов. Грамотное владение ООП (т.е. то, чему надо учить студентов в программистских ВУЗах прежде всего) в сочетании с современными технологиями позволяет красиво и эффективно избавиться от огромного количества кодострочек. Как?

Пример.
Дан текстовый файл с двумерным целочисленным массивом. Необходимо считать массив, упорядочить строки по возрастанию минимального элемента в них и вывести в другой файл результирующий массив. Именно такие задачи решают в школе и на первых курсах, не так ли?


Читать дальше →