По моему скромному мнению, проблема весьма преувеличена. То есть, проблемы нет как таковой.
Мир развивается, развивается и язык. Бурлит, идет пеной. Пена осядет, уйдут нелепицы. Но останутся профессиональные жаргонизмы.
Многие люди просто совсем не изучали английский язык. Даже в школе. Ибо учили там немецкий, испанский или французский. А с английским столкнулись только в последнее время в силу необходимости.
Если человеку, слегка учившему в школе немецкий, показать слово «failure», то он его так и прочитает — «файлюре». И даже «файлюрен». Ибо так более по немецки звучит. И не надо его за это гвоздить к позорному столбу. Надо будет — научится. Главное, чтобы его понимали. А ведь понимают же!
Что касается заимствований, то они были, наверное, всегда. Тут уже писали про «гирлу» и «найтовать». А еще вспоминается «хайр» и «флэт»:
Это, конечно, шутка. И к такому стремиться не надо. Как не надо стремиться очистить язык от всех новоязов и заимствований. А то придется изъяснять языком поборника чистоты Шишкова:
Прошу прощения. Немного ошибся. Не TP, а Delphi. Это для меня динозавра после TP-7 жизни нет :)
А не надо сомневаться :) Во всяком случае, когда он мне объяснял основы C# (это мне лапотному так… для антересу токмо), то постоянно ссылался на своих преподавателей и на то, как его учили и ему самому объясняли.
Конечно, не думаю, что все свои знания он получил только и исключительно в ВУЗе. Но там он получил главное — систематическую основу. А еще у него были толковые преподаватели, плюс близкое окружение единомышленников. А это, согласитесь, при обучении тоже немаловажно.
Но повторю свою более раннюю мысль: Любые, даже самые продвинутые курсы способны только заложить фундамент. И чем лучше обучение, тем фундамент прочнее и ровнее. Но без постоянной самостоятельной работы эти знания так и останутся фундаментом. Т.е. ниже уровня плинтуса.
Так что, одно без другого быть не должно. Граммотная школа и профессиональное саморазвитие.
Это в любой интеллектуальной профессии так. Например, врач без образования — шарлатан, а врач без практики — потенциальный преступник.
Пожалуй, Вы правы… Это у меня еще советский шаблон. ДоЕГЭшный.
В застойные времена было принято писать сочинение даже при поступлении в технический ВУЗ. И сделав 2-3 незначительные грамматические ошибки, можно было распрощаться с надеждой на поступление.
Так что, понятие ВО и элементарной грамотности для меня являются практическими синонимами.
Потом стало проще… Поэтому наш директор изобрел свой собственный метод борьбы с безграмотностью. Если в документе были орфографические ошибки, он его черкал, мял и бросал в личико подателю. Не уверен в педагогичности такого метода, но действенность была на лицо :)
Не вижу причины, по которой данное удачное исключение способно отменить общее правило…
Если обращаться к частным случаям, то могу контраргументировать:
1. Мой племянник (детинушка тридцати лет, двух метров роста и с кулачками размером с мою голову) закончил РРТИ по специальности «Программирование чего-то там». О своей работе особо не распространяется, но заработок весьма достойный, стабильный. Что-то связано с обеспечением инфобезопасности в банковской сфере.
Взяли бы на эту работу человека с улицы без ВО?
2. Был у нас программист. Пришел к нам сразу после диплома. Год проработал, год назад ушел. Не смогли удержать — ни зарплаты предложить подходящей, ни перспективы роста. Так он программировал — как Лиепа танцевал: легко и стремительно. TP, C++, C#, JS, PHP, T-SQL и много чего еще.
Первое наше «боевое» знакомство было таким. Он пришел и сидит. А мне понадобилось извлечь несколько тысяч BLOB'ов из таблиц MS SQL. Ну я ему задачу и задал. Он только спросил какую-нибудь IDE. Дал ему TP-7. Думал, ему дня два понадобится… Через полтора часа все было сделано в лучшем виде. Только у десятка файлов пришлось расширения сменить ручками.
И считаю, что в данном случае именно ВО позволило ему так легко ориентироваться во всех этих ЯП. А попробуйте получить ВО, если жы/шы пишЫте.
3. Были еще и практиканты, которые после колледжа собирались идти в ВУЗ. Весьма грамотные ребята. Уже успевали поработать в нескольких проектах — сольных и коллективных. Но понимали, что только высшее образование в сильном ВУЗе может дать глубокие и систематизированные знания.
4. С другой стороны было полно и таких, которые, закончив колледж, не знают толком ни управляющих структур ни одного ЯП, ни функций форматированного вывода… А амбиций и гонора — помойным ведром не вычерпаешь. Таких провожали без сожаления и не просили возвращаться.
Ибо, как гласит известный медицинский принцип, лечить надо болезнь, а не симптомы.
Ошибки в тексте — это не болезнь. Это как раз симптом. Симптом несобранности, неаккуратности. Можно даже сказать, что это симптом отсутствия педантичности. Хотя сама по себе педантичность не всегда является положительной чертой, но для программиста она, скорее, обязательна.
Сам я не работаю программистом. Но некоторый опыт в этой области всё же есть.
Самый мой большой проект был на языке СУБД Clarion и насчитывал около 60000 строк кода, не считая ассемблерных вставок и вспомогательных утилит, как то оптимизатора оверлейных структур программы при условии возможных взаиморекурсивных вызовов модулей.
И, что самое интересное, несмотря на многие недочеты и спонтанно проявляющиеся ошибки, эта программа используется на родном предприятии уже более 20 лет. И переход на приобретенную современную программу на основе 1С идет с большим трудом уже почти 2 года. Потому что в этой новой программе ошибок и недоделок еще гораздо больше.
Так вот… В алгоритмах утилиты оптимизации оверлейной структуры мной использовались положения интервальной арифметики. А разве ее изучают на курсах программирования? Да и студенты многих математических факультетов про такую не слышали.
Это я к тому речь веду, что любые курсы программирования, даже самые лучшие, способны дать только азы. Большей частью — совершенно бесполезные. А основную работу по изучению приходится вести над собой самому.
Сам я вряд ли могу посоветовать что-то конкретное. Потому что, повторю, я не программист, хоть и программирую по мелочам.
Могу только дать основной вектор самообразования:
Выясните, какие из языков программирования высокого уровня наиболее востребованы в области, в которой хоте ли бы работать.
Выясните, какие из них пригодны для изучения «с нуля», а какие опираются на языки, которые Вам немного знакомы.
Выясните, какие из языков хорошо документированы, имеют учебники, написанные простым и понятным языком, развитые интернет-сообщества.
А дальше всё сами. Своими собственными руками.
И да пребудут в Вами усидчивость, аккуратность и скрупулезность.
Обратился к первоисточнику. Среди обменных сортировок у Кнута рассмотрена пузырьковая с модификациями (шейкерная в т.ч.), параллельная Бэтчера, быстрая с разделением Хоара (QuickSort) и поразрядная обменная.
Сортировки расческой там нет. Хотя идея ее проста и просто сама напрашивается. Сам писал программы по похожему алгоритму лет 30 назад, но не такие эффективные, потому что набор дистанций брал каким угодно (числа Фиббоначи, степени двойки — 1, последовательные простые числа и т.д.), а про снижающий коэффициент 1,247331… только сейчас прочитал.
А ведь в этом коэффициенте как раз весь смысл этого алгоритма.
Третий «кирпич» Кнута, посвященный сортировкам и поиску, был издан в 1973 году. Алгоритм сортировки «расческой» был опубликован в 1980 году, а алгоритм TimSort — 2002 году.
Так что, сведения о том, что там перечислены «все сортировки во всех возможных модификациях, доступных человеческому разуму, возможно, актуальные до момента тепловой смерти нашей Вселенной» несколько преувеличены :)
Что имеется в виду под «затем отсортировать по двум ключам»? Выполнить сортировку в два этапа?
Если делать второй этап только по втолрому ключу, то получим неотсортированный исходный массив.
Если делать второй этап по составному ключу, то смысла в нем нет — можно сразу первым этапом отсортировать по этому составному ключу. Тогда, действительно, получим сохранившийся порядок элементов с одинаковыми первыми ключами.
Только вот к устойчивости алгоритма это не будет иметь абсолютно никакого отношения. Тому как составной ключ будет уникальным. А устойчивость проявляется именно для массивов данных с неуникальными ключами. Причем, проявляется как естественная характеристика алгоритма, не требующая дополнительных телодвижений в виде введения вторичных/составных ключей или сортировки в несколько этапов по этим искусственно введенным ключам.
Нет, я имел в виду не этот алгоритм. Я читал про него когда то бурное обсуждение. И понял, что его эффективность несколько преувеличена. Во всяком случае, не стоит всех тех сложностей реализации.
Во-первых, мне кажется, для одной статьи это слишком большое число алгоритмов. Было бы лучше сгруппировать их в 2-3 группы. Например, по устойчивости (сохранении порядка элементов с одинаковым значением ключа) или по другому критерию.
Во-вторых, не хватает сводной таблички, в которой бы указывались такие характеристики:
1. Устойчивость — сохраняется ли порядок элементов с одинаковыми значениями ключей.
2. Естественность — сортируется ли уже упорядоченный массив быстрее, чем случайный, а случайный быстрее, чем упорядоченный в обратном порядке.
3. Производительность в лучшем, среднем, худшем случаях.
4. Требования к дополнительной памяти (и ее порядок).
5. Области применения (например, для сортировок малых почти упорядоченных массивов и др.).
И еще… Могу, конечно, путать, но, как мне кажется, сортировка слиянием существует в двух вариантах — с дополнительной памятью размера O(n) и без дополнительной памяти — т.е. размера O(1).
И производительность этих сортировок весьма различается.
Скажите, это мне одному кажется, что серверы терминалов (удаленных рабочих столов) — бомбы с горящими запалами?
На них тусуются десятки пользователей. От системных ресурсов эти клиенты не отделены как следует. Обычно и доменные администраторы заходят на эти сервера под своей учеткой…
Вопрос времени — когда какой-нибудь терминальный клиент получит соответствующее письмо или перейдет по ссылке :(
Я имел в виду пробную версию с офсайта MS, для установки которой лицензионный ключ не нужен.
А это не «без лицензии», а не активированная.
Кстати, а как она обновы получает в таком случае? Это раз.
А два — если при установке не ввести ключ, то устанавливается триальный срок.
А если ввести дублирующий, то или не прокатит или можно нарваться на неприятности.
Почему не обновляем? Регулярно обновляем. Но под конкретные объяснимые цели: 1С, геоинформационная система, сервера диспетчеризации… Т.е. всё то, с чем руководство поиграться может :). А КД — это трудно объяснимо и совсем непонятно :D
А если честно, то приходится прижиматься. Хотеть можно закупить хоть что, а план составляется в пределах выделенных лимитов :)
И пока КД не посыпятся окончательно, вряд ли под них средства выделят. Раньше в конце года перепадало немного дополнительно. А теперь и этого не будет…
Мир развивается, развивается и язык. Бурлит, идет пеной. Пена осядет, уйдут нелепицы. Но останутся профессиональные жаргонизмы.
Многие люди просто совсем не изучали английский язык. Даже в школе. Ибо учили там немецкий, испанский или французский. А с английским столкнулись только в последнее время в силу необходимости.
Если человеку, слегка учившему в школе немецкий, показать слово «failure», то он его так и прочитает — «файлюре». И даже «файлюрен». Ибо так более по немецки звучит. И не надо его за это гвоздить к позорному столбу. Надо будет — научится. Главное, чтобы его понимали. А ведь понимают же!
Что касается заимствований, то они были, наверное, всегда. Тут уже писали про «гирлу» и «найтовать». А еще вспоминается «хайр» и «флэт»:
А у Тани на флэту был старинный патефон,
Железная кровать и телефон… © Крематорий. «Таня»
И даже такой анекдот, о крайней степени таких заимствований:
— Хау мач э клок?
— Хаф оф фо.
— Сач мач?
— Хум хау.
Это, конечно, шутка. И к такому стремиться не надо. Как не надо стремиться очистить язык от всех новоязов и заимствований. А то придется изъяснять языком поборника чистоты Шишкова:
«Хорошилище грядет из ристалища на позорище по гульбищу в мокроступах и с растопыркой» ©
Как говорили древние и мудрые: «И это пройдет»…
Прям, елей на душу.
Очень радует, что есть молодые люди, которые
а) видят цель;
б) не видят препятствий;
в) верят в себя.
А если серьезно, то просто было приятно это читать, а не нытье со всех сторон.
А не надо сомневаться :) Во всяком случае, когда он мне объяснял основы C# (это мне лапотному так… для антересу токмо), то постоянно ссылался на своих преподавателей и на то, как его учили и ему самому объясняли.
Конечно, не думаю, что все свои знания он получил только и исключительно в ВУЗе. Но там он получил главное — систематическую основу. А еще у него были толковые преподаватели, плюс близкое окружение единомышленников. А это, согласитесь, при обучении тоже немаловажно.
Но повторю свою более раннюю мысль: Любые, даже самые продвинутые курсы способны только заложить фундамент. И чем лучше обучение, тем фундамент прочнее и ровнее. Но без постоянной самостоятельной работы эти знания так и останутся фундаментом. Т.е. ниже уровня плинтуса.
Так что, одно без другого быть не должно. Граммотная школа и профессиональное саморазвитие.
Это в любой интеллектуальной профессии так. Например, врач без образования — шарлатан, а врач без практики — потенциальный преступник.
В застойные времена было принято писать сочинение даже при поступлении в технический ВУЗ. И сделав 2-3 незначительные грамматические ошибки, можно было распрощаться с надеждой на поступление.
Так что, понятие ВО и элементарной грамотности для меня являются практическими синонимами.
Потом стало проще… Поэтому наш директор изобрел свой собственный метод борьбы с безграмотностью. Если в документе были орфографические ошибки, он его черкал, мял и бросал в личико подателю. Не уверен в педагогичности такого метода, но действенность была на лицо :)
Если обращаться к частным случаям, то могу контраргументировать:
1. Мой племянник (детинушка тридцати лет, двух метров роста и с кулачками размером с мою голову) закончил РРТИ по специальности «Программирование чего-то там». О своей работе особо не распространяется, но заработок весьма достойный, стабильный. Что-то связано с обеспечением инфобезопасности в банковской сфере.
Взяли бы на эту работу человека с улицы без ВО?
2. Был у нас программист. Пришел к нам сразу после диплома. Год проработал, год назад ушел. Не смогли удержать — ни зарплаты предложить подходящей, ни перспективы роста. Так он программировал — как Лиепа танцевал: легко и стремительно. TP, C++, C#, JS, PHP, T-SQL и много чего еще.
Первое наше «боевое» знакомство было таким. Он пришел и сидит. А мне понадобилось извлечь несколько тысяч BLOB'ов из таблиц MS SQL. Ну я ему задачу и задал. Он только спросил какую-нибудь IDE. Дал ему TP-7. Думал, ему дня два понадобится… Через полтора часа все было сделано в лучшем виде. Только у десятка файлов пришлось расширения сменить ручками.
И считаю, что в данном случае именно ВО позволило ему так легко ориентироваться во всех этих ЯП. А попробуйте получить ВО, если жы/шы пишЫте.
3. Были еще и практиканты, которые после колледжа собирались идти в ВУЗ. Весьма грамотные ребята. Уже успевали поработать в нескольких проектах — сольных и коллективных. Но понимали, что только высшее образование в сильном ВУЗе может дать глубокие и систематизированные знания.
4. С другой стороны было полно и таких, которые, закончив колледж, не знают толком ни управляющих структур ни одного ЯП, ни функций форматированного вывода… А амбиций и гонора — помойным ведром не вычерпаешь. Таких провожали без сожаления и не просили возвращаться.
Ибо, как гласит известный медицинский принцип, лечить надо болезнь, а не симптомы.
Ошибки в тексте — это не болезнь. Это как раз симптом. Симптом несобранности, неаккуратности. Можно даже сказать, что это симптом отсутствия педантичности. Хотя сама по себе педантичность не всегда является положительной чертой, но для программиста она, скорее, обязательна.
Сам я не работаю программистом. Но некоторый опыт в этой области всё же есть.
Самый мой большой проект был на языке СУБД Clarion и насчитывал около 60000 строк кода, не считая ассемблерных вставок и вспомогательных утилит, как то оптимизатора оверлейных структур программы при условии возможных взаиморекурсивных вызовов модулей.
И, что самое интересное, несмотря на многие недочеты и спонтанно проявляющиеся ошибки, эта программа используется на родном предприятии уже более 20 лет. И переход на приобретенную современную программу на основе 1С идет с большим трудом уже почти 2 года. Потому что в этой новой программе ошибок и недоделок еще гораздо больше.
Так вот… В алгоритмах утилиты оптимизации оверлейной структуры мной использовались положения интервальной арифметики. А разве ее изучают на курсах программирования? Да и студенты многих математических факультетов про такую не слышали.
Это я к тому речь веду, что любые курсы программирования, даже самые лучшие, способны дать только азы. Большей частью — совершенно бесполезные. А основную работу по изучению приходится вести над собой самому.
Сам я вряд ли могу посоветовать что-то конкретное. Потому что, повторю, я не программист, хоть и программирую по мелочам.
Могу только дать основной вектор самообразования:
Выясните, какие из языков программирования высокого уровня наиболее востребованы в области, в которой хоте ли бы работать.
Выясните, какие из них пригодны для изучения «с нуля», а какие опираются на языки, которые Вам немного знакомы.
Выясните, какие из языков хорошо документированы, имеют учебники, написанные простым и понятным языком, развитые интернет-сообщества.
А дальше всё сами. Своими собственными руками.
И да пребудут в Вами усидчивость, аккуратность и скрупулезность.
Сортировки расческой там нет. Хотя идея ее проста и просто сама напрашивается. Сам писал программы по похожему алгоритму лет 30 назад, но не такие эффективные, потому что набор дистанций брал каким угодно (числа Фиббоначи, степени двойки — 1, последовательные простые числа и т.д.), а про снижающий коэффициент 1,247331… только сейчас прочитал.
А ведь в этом коэффициенте как раз весь смысл этого алгоритма.
Только это снижает число сравнений, примерно в 2 раза. Число перемещений остается тем же.
Так что, сведения о том, что там перечислены «все сортировки во всех возможных модификациях, доступных человеческому разуму, возможно, актуальные до момента тепловой смерти нашей Вселенной» несколько преувеличены :)
Что имеется в виду под «затем отсортировать по двум ключам»? Выполнить сортировку в два этапа?
Если делать второй этап только по втолрому ключу, то получим неотсортированный исходный массив.
Если делать второй этап по составному ключу, то смысла в нем нет — можно сразу первым этапом отсортировать по этому составному ключу. Тогда, действительно, получим сохранившийся порядок элементов с одинаковыми первыми ключами.
Только вот к устойчивости алгоритма это не будет иметь абсолютно никакого отношения. Тому как составной ключ будет уникальным. А устойчивость проявляется именно для массивов данных с неуникальными ключами. Причем, проявляется как естественная характеристика алгоритма, не требующая дополнительных телодвижений в виде введения вторичных/составных ключей или сортировки в несколько этапов по этим искусственно введенным ключам.
Я имел в виду алгоритм Пратта слияния двух предварительно отсортированных частей массива «на месте»: ru.wikipedia.org/wiki/Устойчивая_сортировка
Во-первых, мне кажется, для одной статьи это слишком большое число алгоритмов. Было бы лучше сгруппировать их в 2-3 группы. Например, по устойчивости (сохранении порядка элементов с одинаковым значением ключа) или по другому критерию.
Во-вторых, не хватает сводной таблички, в которой бы указывались такие характеристики:
1. Устойчивость — сохраняется ли порядок элементов с одинаковыми значениями ключей.
2. Естественность — сортируется ли уже упорядоченный массив быстрее, чем случайный, а случайный быстрее, чем упорядоченный в обратном порядке.
3. Производительность в лучшем, среднем, худшем случаях.
4. Требования к дополнительной памяти (и ее порядок).
5. Области применения (например, для сортировок малых почти упорядоченных массивов и др.).
И еще… Могу, конечно, путать, но, как мне кажется, сортировка слиянием существует в двух вариантах — с дополнительной памятью размера O(n) и без дополнительной памяти — т.е. размера O(1).
И производительность этих сортировок весьма различается.
На них тусуются десятки пользователей. От системных ресурсов эти клиенты не отделены как следует. Обычно и доменные администраторы заходят на эти сервера под своей учеткой…
Вопрос времени — когда какой-нибудь терминальный клиент получит соответствующее письмо или перейдет по ссылке :(
А это не «без лицензии», а не активированная.
Кстати, а как она обновы получает в таком случае? Это раз.
А два — если при установке не ввести ключ, то устанавливается триальный срок.
А если ввести дублирующий, то или не прокатит или можно нарваться на неприятности.
Почему не обновляем? Регулярно обновляем. Но под конкретные объяснимые цели: 1С, геоинформационная система, сервера диспетчеризации… Т.е. всё то, с чем руководство поиграться может :). А КД — это трудно объяснимо и совсем непонятно :D
А если честно, то приходится прижиматься. Хотеть можно закупить хоть что, а план составляется в пределах выделенных лимитов :)
И пока КД не посыпятся окончательно, вряд ли под них средства выделят. Раньше в конце года перепадало немного дополнительно. А теперь и этого не будет…