Наболело.
Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Будут сыпать знаниями всех парадигм, кучи ЯП и матана. И гнать всё тот же кривой быдлокод
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А вы что, предлагаете на ассемблере каждый раз все создавать с нуля?
Есть инструментарий, им надо пользоваться. Это как раз характеристика хорошего разработчика — знать, где что взять, чтобы не изобретать велосипед.
А>А смотришь на их результат — интерфейсы все как один говно
Ну так не используйте интерфейсы. Все равно почти нигде от них нет толка.
А>система тормозит от этих ваших гибернейтов нещадно
Откуда вы знаете, от чего она тормозит? Может, у вас просто индексы неправильные?
А>кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС
Прекрасно помогает. Чем больше проект и чем больше однотипных операций, тем сложнее и неэффективнее писать SQL вручную.
А>За код который они пишут, у нас в команде убивают без суда и следствия.
Вам к психоаналитику сходить надо.
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
А зачем вам алгоритмы в прикладной (не системной) разработке?
Базовые операции поддерживает язык программирования. Структуры данных есть в библиотеке классов. Сортировку выполняет база данных. Куда приткнуть ваши алгоритмы в ненаукоемком проекте?
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Эти знания ортогональны к способности создавать качественные разработки.
Может, в силу объективных причин от вас талант бежит? Я бы очень быстро ушел, когда увидел бы людей с таким мировоззрением в коллективе.
Здравствуйте, DorfDepp, Вы писали:
DD>Здравствуйте, Антихрист, Вы писали:
А>>Наболело. А>>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
DD>А вы что, предлагаете на ассемблере каждый раз все создавать с нуля?
DD>Есть инструментарий, им надо пользоваться. Это как раз характеристика хорошего разработчика — знать, где что взять, чтобы не изобретать велосипед.
Но вользуются то ведь говном.
А>>А смотришь на их результат — интерфейсы все как один говно
DD>Ну так не используйте интерфейсы. Все равно почти нигде от них нет толка.
А Вы про какие интерфейсы? )))
А>>система тормозит от этих ваших гибернейтов нещадно
DD>Откуда вы знаете, от чего она тормозит? Может, у вас просто индексы неправильные?
Оверхед гибернейта.
А>>кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС
DD>Прекрасно помогает. Чем больше проект и чем больше однотипных операций, тем сложнее и неэффективнее писать SQL вручную.
Есть другие, годные ОРМ.
А>>За код который они пишут, у нас в команде убивают без суда и следствия.
DD>Вам к психоаналитику сходить надо.
Не надо.
А>>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
DD>А зачем вам алгоритмы в прикладной (не системной) разработке?
Комп игры, ГИС системы, любая аналитика.
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
DD>Эти знания ортогональны к способности создавать качественные разработки.
Т.е. ты в принципе можешь без знания математики написать качественную ОС реального времени?
DD>Может, в силу объективных причин от вас талант бежит? Я бы очень быстро ушел, когда увидел бы людей с таким мировоззрением в коллективе.
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А>А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Ну дык, эта. Покажи быдлокодерам мощь! Напиши программу лучше и быстрее, чем они, чтобы она летала, радовала глаз, и вытеснила кривые глючные поделки! Собери единомышленников, заработай миллиарды, отхватив жирные доли рынка программ — они же хреновые, но вот конкретно ты-то точно сможешь ведь лучше, правда? Так чего трепешься тут, захватывай мир!
Если по существу, то некоторые действительно страдают особым фимозом, пытаясь запихать все возможные технологии в проект, замутить декларативный подход, написав тонну кода там, где хватит трех строчек, настроить архитектурных высеров размером с пирамиды, и т.д. В результате получается, что 95% проекта обслуживает его архитектурную "красоту", а 95% времени уходит на анализ ошибок, которые стали километровыми и нихренанепонятными. Такой подход действительно ужасен. Но это отнюдь не доказывает, что технологии хреновы. Это просто данный конкретный программер слегка поврежден мозгом. Нужно просто использовать технологии по назначению, а не потому что это круто.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
А чем сертификаты не устраивают ? Вот у Lloyd'a уже есть один.
Здравствуйте, B0FEE664, Вы писали:
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. BFE>А чем сертификаты не устраивают ? Вот у Lloyd'a уже есть один.
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Антихрист, Вы писали:
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. BFE>А чем сертификаты не устраивают ? Вот у Lloyd'a уже есть один.
Серификат, выданный одними быдлокодерами другому??? Шучу, конечно. Думаю, разрешение на сертификацию коммерсами должно выдаваться хотя бы РАН.
Здравствуйте, Антихрист, Вы писали:
А>Серификат, выданный одними быдлокодерами другому??? Шучу, конечно. Думаю, разрешение на сертификацию коммерсами должно выдаваться хотя бы РАН.
РАН-то зачем? Программирование — не наука, а ремесло.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Антихрист, Вы писали:
А>>Серификат, выданный одними быдлокодерами другому??? Шучу, конечно. Думаю, разрешение на сертификацию коммерсами должно выдаваться хотя бы РАН.
L>РАН-то зачем? Программирование — не наука, а ремесло.
Наукоемкое ремесло. Там где разрабы, так сказать, в науках не смыслят — имеем то что имеем.
Здравствуйте, Антихрист, Вы писали:
А>Наболело.
Бывает. Иногда помогают топики про злых собеседователей или тупых кандидатов
А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
Если система действительно держит высокую нагрузку — то они выдали результат и значит сыплют не зря
ИМХО У них есть чему поучиться.
А>А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
Так покажите им свой код и свои интерфейсы. Попытайтесь обьяснить разницу. А уж если не выйдет, то не факт что они виноваты
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему.
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
А критерий "годного" матана у Вас есть? Ну про список "всех" парадигм я уже не спрашиваю
Здравствуйте, robin_of_the_wood, Вы писали:
___>Так покажите им свой код и свои интерфейсы. Попытайтесь обьяснить разницу. А уж если не выйдет, то не факт что они виноваты
Меня эти товарищи, на самом деле мало интересуют. Просто они как тов. Паниковский — портят рынок.
А>>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики? ___>Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему.
Ну приведите мне программистскую задачу, нетребующую знания математики.
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. ___>А критерий "годного" матана у Вас есть? Ну про список "всех" парадигм я уже не спрашиваю
Не в математике проблема, и не в программировании, и не в логике. Проблема в отсутствии навыков системного мышления и анализа. Этому в ВУЗах не учат, но без этого навыка не получится нормального инженера. В том числе инженера-программиста.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Антихрист, Вы писали:
L>>>РАН-то зачем? Программирование — не наука, а ремесло.
А>>Наукоемкое ремесло.
L>95%-ов позиций — не наукаемкие.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Антихрист, Вы писали:
А>>Знаю одно бывшего водопроводчика — теперь шарписта. Пишет, думаю, не хуже ребят из донет раздела )))
L>Русский язык программистам иногда тоже не мешает подучить.
Здравствуйте, Антихрист, Вы писали:
___>>Так покажите им свой код и свои интерфейсы. Попытайтесь обьяснить разницу. А уж если не выйдет, то не факт что они виноваты А>Меня эти товарищи, на самом деле мало интересуют. Просто они как тов. Паниковский — портят рынок.
Не совсем понял что значит "портить рынок", но если они предлагают свой некачественный(с вашей точки зрения) товар, то ведь это Вам дает возможность выглядеть на их фоне гораздо лучше не затратив ни цента. А Паниковский насколько я помню нарушил конвенцию и начал работать по схеме "Дети лейтенанта Шмидта" не на своей территории. К рынку это очень отдаленно относится. Мне это больше крышевание базара в 90е годы напоминает
___>>Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему. А>Ну приведите мне программистскую задачу, нетребующую знания математики.
1. Почти весь саппорт и багфиксинг.
2. Большинство простых приложений отображающих UI формы на DB таблицы.
3. БОльшая часть задач в довольно сложных проектах.
Я знаю несколько хороших программистов, которые ввиду тех или иных причин никогда не выходили за пределы этих трех пунктов.
И тем не менее у них есть чему поучиться в плане праграммирования.
А>>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. ___>>А критерий "годного" матана у Вас есть? Ну про список "всех" парадигм я уже не спрашиваю А>Все, что востребовано в computer science
Слово "все", как и другие подобные слова — очень субьективно интерпретируемая штука.
Когда два разных человека говорят "Все" каждый из них подразумевает одному ему известные границы.
В Вашей точке зрения очень много максимализма и эмоций.
А это очень плохие составляющие в рабочем(не личном) споре. Хотя тут уже кому чего нужно
Здравствуйте, robin_of_the_wood, Вы писали:
___>Здравствуйте, Антихрист, Вы писали:
___>>>Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему. А>>Ну приведите мне программистскую задачу, нетребующую знания математики. ___>1. Почти весь саппорт и багфиксинг. ___>2. Большинство простых приложений отображающих UI формы на DB таблицы. ___>3. БОльшая часть задач в довольно сложных проектах. ___>Я знаю несколько хороших программистов, которые ввиду тех или иных причин никогда не выходили за пределы этих трех пунктов. ___>И тем не менее у них есть чему поучиться в плане праграммирования.
1. Ну саппорт он разный бывает, а багфиксинг это скорее часть программистской задачи.
2. Хм. По стечению обстоятельств я сегодня работал над фреймворком для отображения DB на UI. Готового нельзя было использовать. А педалить формы — не наш выбор. Сделал свою вариацию MVC, сделал автоматический разбор структур, ну и поипался немного со внешним видом. Усе. Прога теперь нарисует UI сколько угодно за меня ))).
3...
Чему, например. Без сарказма, я сам достаточно молодой разраб, мне еще учиться и учиться.
А>>>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. ___>>>А критерий "годного" матана у Вас есть? Ну про список "всех" парадигм я уже не спрашиваю А>>Все, что востребовано в computer science ___>Слово "все", как и другие подобные слова — очень субьективно интерпретируемая штука. ___>Когда два разных человека говорят "Все" каждый из них подразумевает одному ему известные границы. ___>В Вашей точке зрения очень много максимализма и эмоций. ___>А это очень плохие составляющие в рабочем(не личном) споре. Хотя тут уже кому чего нужно
Да, много максимализма. Я ж говорю — наболело. Поэтому в священных войнах.
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами А>NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны.
рискну высказать свое спорное мнение, что к ООП (в том виде в котором оно реализовано в плюсах) можно допускать только после 5 ~ 10 лет опыта с процедурными языками, ибо плюсы это действительно очень сложный язык. сначала нужно научиться основам декомпозиции задачи, понять что такое данные, а что такое методы их обработки (в частности, класс sort, реализующий 100500 методов сортировки это неправильный путь, т.к. нет такой сущности как "сортировка", а есть массивы, файлы, списки, строки и потому доступные для данного типа данных сортировки должны быть методами, а эти методы должны в свою очередь звать методы данного конкретного класса для взятия элементов и их сравнения... да блин, какое в попу ооп, когда на нем сплошь и рядом обработка строк реализуется на уровне байтов без всяких абстракций, таких как "символ")
> Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
если бы она еще и работала...
А> И все эти прогеры, как один, взахлеб кричат о бесполезности математики. А> Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
смотря на каком этапе развития он находится и на каком уровне абстракции обитает. в былые годы я увлекался системным программированием и курил способы перехвата функций, восстановления разрушенных дисковых томов, программирования железа... особой математики тут не требовалось.
сейчас зарылся в алгоритмы, начиная с базовых и кончая продвинутыми. системное программирование осталось позади. сейчас пишу системно-независимый код, работающий не с железом, а со стандартным вводом/выводом. но вот тут внезапно потребовалось добавить в BIOS свой модуль. это можно сделать наняв контрактора на 100500 баксов или тряхнув стариной и вспомнив молодось (что я биосный модуль не напишу?!). а какая в биос математика? какие алгоритмы?
вообще, программирование очень многолико и разнообразно. и далеко не все области требуют знания матчасти. возращаясь к примеру с биос. вот вам материнка, вот вам гугл. вот вам оригинальная прошивка. добавьте к BIOS свой модуль для удаленного администрирования по сети (конкретно надо вкл/выкл питалово и ребутнуть даже если ось сдохла). чем вам поможет математика? чем вам помогут алгоритмы?
А> Мое мнение — в стране нужно ввести жесткое лицензирование для программистов А> с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
хотите, чтобы и оставшиеся программисты из этой страны свалили? тогда уж точно вы наедитесь говнокода досыта.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Антихрист, Вы писали:
А>1. Ну саппорт он разный бывает, а багфиксинг это скорее часть программистской задачи. А>2. Хм. По стечению обстоятельств я сегодня работал над фреймворком для отображения DB на UI. Готового нельзя было использовать. А педалить формы — не наш выбор. Сделал свою вариацию MVC, сделал автоматический разбор структур, ну и поипался немного со внешним видом. Усе. Прога теперь нарисует UI сколько угодно за меня ))). А>3... А>Чему, например. Без сарказма, я сам достаточно молодой разраб, мне еще учиться и учиться.
Это все хорошо. Особенно желание учиться. Оно не только молодым нужно (Говорю совершенно без тени сарказма)
Просто хочется предостеречь от встречаемых мной попыток изобрести лучше без желания узнать в деталях как это делали другие.
Это не касается лично Вас и даже скорее офтоп. Но иногда(далеко не всегда) я встречал попытки создания аналогов известных либ без понимания ключевых моментов, и соответственно без понимания сильных и слабых сторон. Сопровождать это было ужасно А иногда после вникания в суть происходило понимание того, что чужая либа дает гораздо больше и делает это гораздо лучше, и проще под нее адаптироваться чем команду ее разработчиков догонять. Это не для спора. Просто информация к сведению
___>>>>А критерий "годного" матана у Вас есть? Ну про список "всех" парадигм я уже не спрашиваю А>>>Все, что востребовано в computer science ___>>Слово "все", как и другие подобные слова — очень субьективно интерпретируемая штука. ___>>Когда два разных человека говорят "Все" каждый из них подразумевает одному ему известные границы. ___>>В Вашей точке зрения очень много максимализма и эмоций. ___>>А это очень плохие составляющие в рабочем(не личном) споре. Хотя тут уже кому чего нужно А>Да, много максимализма. Я ж говорю — наболело. Поэтому в священных войнах.
Так вот в этом максимализме то и проблема.
Вы участников некоторого набора конфликтных ситуаций разделили на два противоборствующих лагеря.
И причем первым приписали знание различных технологий и фреймворков а вторым — знание математики. (Ну это я округлил)
А ведь если попытаться углубиться в предмет спора в каждом конкретном случае, то очень может быть что все перечисленное то и не при чем. Возможно что просто конкретный человек в конкретном случае под действием конкретных обстоятельств написал такой себе нехороший код. А то, что он любит скажем Spring и недооценивает роль матана, может и не есть корень зла?
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Это вы просто не видели жосткого государственного лицензирования. Увидите — будете умолять вернуть быдлокодеров.
А>>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. BFE>>А чем сертификаты не устраивают ? Вот у Lloyd'a уже есть один.
А>Серификат, выданный одними быдлокодерами другому??? Шучу, конечно. Думаю, разрешение на сертификацию коммерсами должно выдаваться хотя бы РАН.
И работать потом в госсекторе — вперед, за орденами за 15 тыр!
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
___>>Так покажите им свой код и свои интерфейсы. Попытайтесь обьяснить разницу. А уж если не выйдет, то не факт что они виноваты А>Меня эти товарищи, на самом деле мало интересуют. Просто они как тов. Паниковский — портят рынок.
То есть как, портят рынок? Рынок он такой, кто востребован, то будет на коне.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
А тебе-то какая разница? Если такой умный (без сарказма ) и продвинутый, то ничего не мешает найти новое место , если сам набираешь, то отсеивай тех, кто не нравится.
У меня вот на предпоследнем месте были тонны изысканного говнокода, плевался, фыркал, но что-то писал и ни разу не покидала мысль, что я то вот сейчас найду себе теплое местечко, а они со своим говнокодом так и останутся.
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики? А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
О, люблю послушать "настоящих" программистов о том, как они применили знания матана в своем последнем проекте. Расскажите нам пожалуйста!
А еще интересно — что в вашем понимании есть "знание логики"? Только не надо про true/false и and/or/xor/not.
Наболело.
Пользователи. Которые так и сыплют аббревиатурами и лейблами IBM PC, Windows, Office, Excel, наизусть знают расположение всех мин в сапёре. Млеют от того насколько они круто печатают одним пальцем на клавиатуре.
А смотришь на их результат — документы отформатированы пробелами, система тормозит от этих ваших 10мегапиксельных фотографий, вставленных в вордовский файл. За безграмотный текст, который они пишут, у нас в команде убивают без суда и следствия.
И все эти пользователи, как один, взахлеб кричат о бесполезности знания устройства компьютера. $#@# %$@%! Как пользователь может кичиться незнанием принципов работы ЦП, ОЗУ, ПЗУ, НЖМД, ПДП итд того, с чем он работает?
Мое мнение — в стране нужно ввести жесткое лицензирование для пользователей с требованиями по знаниям устройства железа, 2-3 ОС, и годного матана.
Изыди, сотона!
А>А смотришь на их результат — интерфейсы все как один говно,
Говно — это согласно каким критериям?
А>система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС).
Hibernate — отличная штука, но если тормозит, нужно чего-нибудь другое.
А>За код который они пишут, у нас в команде убивают без суда и следствия.
Так какие критерии говнокода и говноинтерфейсов? Одни эмоции без какой-либо конкретики
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
Прям все до одного? Математика — штука неплохая, только она — это такой же инструмент, как и какой нибудь язык программирования. На тебя посмотришь — ты на эту математику молишься.
"Логика" — это женская что ли?
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Я предлагаю добавить еще физику, химию, историю — для широты кругозора!
Здравствуйте, Eugeny__, Вы писали:
E__>Здравствуйте, Антихрист, Вы писали:
А>>>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. BFE>>>А чем сертификаты не устраивают ? Вот у Lloyd'a уже есть один.
А>>Серификат, выданный одними быдлокодерами другому??? Шучу, конечно. Думаю, разрешение на сертификацию коммерсами должно выдаваться хотя бы РАН.
E__>И работать потом в госсекторе — вперед, за орденами за 15 тыр!
Работал в госсекторе в 2000-2003, даже тогда там 15 тыр. было несерьезно. Правда, это была атомная энергетика, но вроде секретаршам платили побольше. Что-то мне кажется, что в наукоемких областях не такие уж маленькие зарплаты, даже в государственных конторах.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
А какой наукой занимаются программисты в атомной энергетике? Можно подумать они там самостоятельно проектируют реакторы или моделируют развитие цепной реакции. Много ли нужно фундаменальных знаний, чтобы закодировать готовый алгоритм?
Здравствуйте, abibok, Вы писали:
A>А какой наукой занимаются программисты в атомной энергетике? Можно подумать они там самостоятельно проектируют реакторы или моделируют развитие цепной реакции. Много ли нужно фундаменальных знаний, чтобы закодировать готовый алгоритм?
Там очень много смежных отраслей. Лично я писал софт для сейсмологии, и математики там хватало. Вообще, АЭС — это не только несколько реакторов и турбин, это большая инфраструктура.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А>А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
А>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
А почему ты думаешь, что такие программисты бесполезны? У них есть своя ниша — как минимум это быстрое прототипирование (что крайне важно при общении с заказчиком), ну а если тебя не смущает — то и запудривание мозга заказчику:) а дальше уже можно вести более тщательное проектирование.
Ну а что такой хрен считает себя пупом земли — ну а как же без этого? ;)
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Здравствуйте, abibok, Вы писали:
A>А какой наукой занимаются программисты в атомной энергетике? Можно подумать они там самостоятельно проектируют реакторы или моделируют развитие цепной реакции.
Анализ процессов постфактум, предсказание развития — куча математики.
Контроль процессов в системе наблюдения — теория массового обслуживания, специфические разделы теории вероятностей и матстатистики.
Само по себе проектирование системы наблюдения и контроля уже крайне интересно алгоритмически и не имеет отношения к собственно процессам в реакторе.
A> Много ли нужно фундаменальных знаний, чтобы закодировать готовый алгоритм?
Много. Например, решение уравнений высоких порядков численно на разностной сетке требует понимания принципов работы с плавающей точкой, иначе можно прийти к классическим диверсиям типа (1 + \epsilon) + \epsilon == 1. И хорошо ещё, если сетка равномерная и прямоугольная; на треугольных и прочих более хитрых всплывают ещё более интересные особенности.
Здравствуйте, Andrey.V.Lobanov, Вы писали:
AVL>Здравствуйте, Антихрист, Вы писали:
AVL>Наболело. AVL>Пользователи. Которые так и сыплют аббревиатурами и лейблами IBM PC, Windows, Office, Excel, наизусть знают расположение всех мин в сапёре. Млеют от того насколько они круто печатают одним пальцем на клавиатуре.
AVL>А смотришь на их результат — документы отформатированы пробелами, система тормозит от этих ваших 10мегапиксельных фотографий, вставленных в вордовский файл. За безграмотный текст, который они пишут, у нас в команде убивают без суда и следствия.
AVL>И все эти пользователи, как один, взахлеб кричат о бесполезности знания устройства компьютера. $#@# %$@%! Как пользователь может кичиться незнанием принципов работы ЦП, ОЗУ, ПЗУ, НЖМД, ПДП итд того, с чем он работает?
Зря ёрничаете. Мир уже ушёл от того времени, когда "компьютерная грамотность" была умением нажать букву в Ворде, и давно пора учить по-настоящему.
AVL>Мое мнение — в стране нужно ввести жесткое лицензирование для пользователей с требованиями по знаниям устройства железа, 2-3 ОС, и годного матана.
Устройство нужно, но не на таком уровне, как у программистов. И матан, конечно, нужен. Ибо голову развивает.
А>Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
Да легко, вообщем-то. Не все же сортировки и кодеки пишут. Я вот не понимаю как можно дискретику и алгоритмы запихивать туда, куда не нужно — а потом удивляться, что код никто поддерживать не может O_O
Здравствуйте, netch80, Вы писали:
AVL>>И все эти пользователи, как один, взахлеб кричат о бесполезности знания устройства компьютера. $#@# %$@%! Как пользователь может кичиться незнанием принципов работы ЦП, ОЗУ, ПЗУ, НЖМД, ПДП итд того, с чем он работает?
N>Зря ёрничаете. Мир уже ушёл от того времени, когда "компьютерная грамотность" была умением нажать букву в Ворде, и давно пора учить по-настоящему.
Так наоборот же, устройства проще и проще становится. Когда-то надо было уметь менять кассеты, понимать, что такое файловая система, уметь "правильно" выключать компьютер, и так до бесконечности. Современные устройства во многом стали сильно проще.
Здравствуйте, Антихрист, Вы писали:
А>А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Давно известно, чем более закрытой является та или иная индустрия в стране, тем медленнее она развивается.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Да какой ты к чёрту анархист после этого?!
Здравствуйте, DorfDepp, Вы писали:
DD>А зачем вам алгоритмы в прикладной (не системной) разработке?
DD>Базовые операции поддерживает язык программирования. Структуры данных есть в библиотеке классов. Сортировку выполняет база данных. Куда приткнуть ваши алгоритмы в ненаукоемком проекте?
вот есть на сайте яндекса такой вопрос (да не возненавидят меня его сотрудники, что привожу его для публичного обсуждения):
Существует следующий фрагмент программы:
tokens = []
for token in tokeniter:
if token not in tokens:
tokens.append(token)
Здесь tokensiter — итератор, выдающий достаточно большую последовательность токенов, которые могут повторяться.
На выходе у этого фрагмента программы массив уникальных токенов, без повторений, у которого сохранен хронологический порядок появления токенов из входной последовательности tokensiter.
Оцените временную сложность этого фрагмента и предложите обоснованные способы оптимизации.
Эта задача вполне прикладного уровня, а у этого кода O(n^2). Как думаешь, что будет с этим кодом, если дать на вход пару миллионов элементов? А простая оптимизация с двоичными поиском и вставкой в массив пары (token, порядок_вставки) даст что-то около O(log n) + O(n). Второе слагаемое — это стоимость вставки в отсортированный массив. Потом можно развернуть всё в необходимый список с сохранением хронологического порядка появления токенов. Всё это прикладной уровень, но без знания алгоритмов твоя программа будет работать по коду из задачи, что приведёт к потере машинного времени, да и результата ты можешь не дождаться несколько дней.
Здравствуйте, monax, Вы писали:
M>Здравствуйте, DorfDepp, Вы писали:
DD>>А зачем вам алгоритмы в прикладной (не системной) разработке?
DD>>Базовые операции поддерживает язык программирования. Структуры данных есть в библиотеке классов. Сортировку выполняет база данных. Куда приткнуть ваши алгоритмы в ненаукоемком проекте?
M>вот есть на сайте яндекса такой вопрос (да не возненавидят меня его сотрудники, что привожу его для публичного обсуждения):
M>
M>Существует следующий фрагмент программы:
M>
M>tokens = []
M>for token in tokeniter:
M> if token not in tokens:
M> tokens.append(token)
M>
M>Здесь tokensiter — итератор, выдающий достаточно большую последовательность токенов, которые могут повторяться.
M>На выходе у этого фрагмента программы массив уникальных токенов, без повторений, у которого сохранен хронологический порядок появления токенов из входной последовательности tokensiter.
M>Оцените временную сложность этого фрагмента и предложите обоснованные способы оптимизации.
M>Эта задача вполне прикладного уровня, а у этого кода O(n^2).
Это — очень специфическая задача вполне себе системного характера. В прикладном программировании такие не встречаются.
Здравствуйте, DorfDepp, Вы писали:
DD>Это — очень специфическая задача вполне себе системного характера. В прикладном программировании такие не встречаются.
приведи тогда примеры задач, которые ты относишь к прикладным
Здравствуйте, dimgel, Вы писали:
D>И матан, конечно, не нужен. Ибо голову забивает.
"не знаешь матан — пойдёшь на метан". как-то так вроде, точную цитату не помню.
DD>Это — очень специфическая задача вполне себе системного характера. В прикладном программировании такие не встречаются.
Чего? Это одна из наиболее типовых задач в прикладном программировании — выбор контейнера в зависимости от стратегии его использования.
Проблема есть. Она, вообще говоря, системная.
Для иллюстрации расскажу что сейчас делается в Индии -в плане того, как туда аутсорсят все на свете, от написания кода до техподдержки. Когда-то в индийском IT зарплаты в 10ки, если не сотни, раз превышали средние — например, в 2005 году зарплата программиста в Дели была под две штуки баксов, при средней в сотни две-три. Программисты реально были вышей кастой.
Потом мощный поток аутсорса породил огромный спрос, и сейчас больше 90% молодежи в Индии заняты в айтишном аутсорсе. При этом знания у них, мягко скажем, не велики. Что, закономерно, привело к падению зарплат. Крупные аутсорсеры (типа HCL) платят своим работникам копейки — на улице полно желающих устроиться на работу. Что, удивительным образом, привело к снижению уровня качества в среднем по индустрии и понизило общие требования к сотрудникам. В результате тот небольшой процент людей, которые действительно знают и умеют, не находят себе места — потому что работать за копейки им, условно говоря, западло — а больше не предлагают, не зачем. И очевидно, количество грамотных специалистов падает.
И примерно такая же ситуация, боюсь, может сложиться и на девелоперском фронте.
Здравствуйте, Vamp, Вы писали:
V>Чего? Это одна из наиболее типовых задач в прикладном программировании — выбор контейнера в зависимости от стратегии его использования.
collection.Distinct().OrderBy(c => c.ComeValue) — это действительно типичная задача. А упомянутые миллионы элементов — уже не очень.
Здравствуйте, monax, Вы писали:
M>Здравствуйте, DorfDepp, Вы писали:
DD>>А зачем вам алгоритмы в прикладной (не системной) разработке?
DD>>Базовые операции поддерживает язык программирования. Структуры данных есть в библиотеке классов. Сортировку выполняет база данных. Куда приткнуть ваши алгоритмы в ненаукоемком проекте?
M>вот есть на сайте яндекса такой вопрос (да не возненавидят меня его сотрудники, что привожу его для публичного обсуждения):
M>
M>Существует следующий фрагмент программы:
M>
M>tokens = []
M>for token in tokeniter:
M> if token not in tokens:
M> tokens.append(token)
M>
M>Здесь tokensiter — итератор, выдающий достаточно большую последовательность токенов, которые могут повторяться.
M>На выходе у этого фрагмента программы массив уникальных токенов, без повторений, у которого сохранен хронологический порядок появления токенов из входной последовательности tokensiter.
M>Оцените временную сложность этого фрагмента и предложите обоснованные способы оптимизации.
M>Эта задача вполне прикладного уровня, а у этого кода O(n^2).
А вот и нет. Потому что O(n^2) будет в худшем случае, когда множество различных токенов не ограничено сверху.
M>Как думаешь, что будет с этим кодом, если дать на вход пару миллионов элементов?
В случае с парой миллионов элементов этот код не имеет смысла если множество различных токенов не ограничено сверху. Ну получишь таким кодом (2*10^6 — 1) и что ты с ними дальше делать будешь?
По сути почти всегда будет O(n*m), причем n не уменьшится, а m может оказаться достаточно мало, чтобы не было разницы как делать этот самый поиск.
M>А простая оптимизация с двоичными поиском и вставкой в массив пары (token, порядок_вставки) даст что-то около O(log n) + O(n). Второе слагаемое — это стоимость вставки в отсортированный массив. Потом можно развернуть всё в необходимый список с сохранением хронологического порядка появления токенов.
Исходное O(n^2) складывается из прохода по всем элементам (1), поиска в неотсортированом массиве (2).
Ты предлагаешь (2) со сложностью O(n) заменить на что-то со сложностью O(log n)+O(n), что фактически равно O(n).
В итоге ты заменил одно O(n) на другое O(n).
Но тебе повезло и ты ошибся. После binary search надо вставить элемент в позицию, найденную уже binary search, что приводит к общей сложности выполнения O(log n).
M>Всё это прикладной уровень, но без знания алгоритмов твоя программа будет работать по коду из задачи, что приведёт к потере машинного времени, да и результата ты можешь не дождаться несколько дней.
Да-да-да...
1)Вставка и поиск в массиве: 2 минуты
2)Поиск в отсортированном массиве: 4 секунды
3)tokeniter.Distinct(): 0.3 секунды
Вот тебе и "прикладной уровень" и "знание алгоритмов". А на деле надо знать стандартную библиотек и не выдумывать велосипеды.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Не только у вас в стране, а по всему миру! Сделать все как в медах: 6 лет ВУЗ + 1-9 лет всякие доучивания на практике.
Только надо понимать, что "рынок диктует условия". И если проводить аналогию с врачами, то очень быстро появятся всякие "народные целители от программирования", которые будут работать "без лицензии".
Здравствуйте, silverwolf, Вы писали:
S>Здравствуйте, Антихрист, Вы писали:
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана. S>Не только у вас в стране, а по всему миру! Сделать все как в медах: 6 лет ВУЗ + 1-9 лет всякие доучивания на практике. S>Только надо понимать, что "рынок диктует условия". И если проводить аналогию с врачами, то очень быстро появятся всякие "народные целители от программирования", которые будут работать "без лицензии".
Здравствуйте, robin_of_the_wood, Вы писали:
___>>>Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему. А>>Ну приведите мне программистскую задачу, нетребующую знания математики. ___>1. Почти весь саппорт и багфиксинг.
Как насчет багфиксинга с заменой наивной имплементации на нормальный алгоритм? Делал неоднократно.
Здравствуйте, monax, Вы писали:
M> А простая оптимизация с двоичными поиском и вставкой в массив пары (token, порядок_вставки) даст что-то около O(log n) + O(n). Второе слагаемое — это стоимость вставки в отсортированный массив.
N элементов по логарифму на каждый. Подумай ещё раз и умножь на N.
Здравствуйте, femidav, Вы писали:
А>>>Ну приведите мне программистскую задачу, нетребующую знания математики. ___>>1. Почти весь саппорт и багфиксинг.
F>Как насчет багфиксинга с заменой наивной имплементации на нормальный алгоритм? Делал неоднократно.
Ну я бы сказал что и среди такого багфаксинга не всегда есть куда математические знания приложить.
Иногда лишний раз ищем уже найденый элемент. Иногда не подумали что данных может быть много.
Иногда часто встречаемые комбинации данных можно обработать более оптимально.
При определенном желании все эти действия тоже можно свести к математике, но их в принципе может выполнить и человек матана не учивший.
Но конечто есть задачи где математика нужна и на уровне гораздо выше элементарного. Вот только в результате программирования в довольно разных направлениях мне все же не показалось, что таких задач большинство.
И именно поэтому я и сказал "Почти весь"
Хотя я то писал про свой опыт и вполне вероятно что в Вашей специализации положение дел несколько иное.
Здравствуйте, Антихрист, Вы писали:
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Тебе не страшно давать российской бюрократии право контролировать что либо? Российская бюрократия хоть что-то контролирует эффективно?
Здравствуйте, gandjustas, Вы писали:
M>>Как думаешь, что будет с этим кодом, если дать на вход пару миллионов элементов? G>В случае с парой миллионов элементов этот код не имеет смысла если множество различных токенов не ограничено сверху. Ну получишь таким кодом (2*10^6 — 1) и что ты с ними дальше делать будешь?
обрабатывать буду. я взял это не с потолка, у меня есть задачи (немного, но есть), в которых приходится обрабатывать 1-1.5 млн уникальных объектов
M>>Эта задача вполне прикладного уровня, а у этого кода O(n^2). G>А вот и нет. Потому что O(n^2) будет в худшем случае, когда множество различных токенов не ограничено сверху.
G>По сути почти всегда будет O(n*m), причем n не уменьшится, а m может оказаться достаточно мало, чтобы не было разницы как делать этот самый поиск.
А может и не оказаться. Хотя вот с O(n^2) я погорячился, рассматривал случай, когда множество не ограничено.
для примера, код из задачи перенесём в функцию:
def simple_insertion(tokeniter):
tokens = []
for token in tokeniter:
if token not in tokens:
tokens.append(token)
return tokens
Потом нужен код, который проверит время работы в случаях: увеличиваю общее кол-во элементов, увеличиваю кол-во уникальных элементов, увеличиваю и то и другое на больших наборах (я буду работать с целыми числами, чтобы проще было)
from random import shuffle
from timeit import timeit
print'n * 10 000'
counts = (100, 100)
for i in enumerate(counts):
tokeniter = []
for x in range(10000 * (i[0] + 1)):
tokeniter += range(i[1])
shuffle(tokeniter)
setup = 'from __main__ import tokeniter, simple_insertion'print'%-10d:' % i[1], timeit('simple_insertion(tokeniter)', setup, number=1)
print'n * 10 000'
counts = (100, 200)
for i in enumerate(counts):
tokeniter = []
for x in range(10000 / (i[0] + 1)):
tokeniter += range(i[1])
shuffle(tokeniter)
setup = 'from __main__ import tokeniter, simple_insertion'print'%-10d:' % i[1], timeit('simple_insertion(tokeniter)', setup, number=1)
print'n * 100'
counts = (10000, 20000)
for count in counts:
tokeniter = []
for x in range(100):
tokeniter += range(count)
shuffle(tokeniter)
setup = 'from __main__ import tokeniter, simple_insertion'print'%-10d:' % count, timeit('simple_insertion(tokeniter)', setup, number=1)
Вот результат работы
n * 10 000
100 : 1.21939106647
100 : 2.3543892777
n * 10 000
100 : 1.2208505149
200 : 2.32651335157
n * 100
10000 : 158.427437784
20000 : 673.992963291
Обрати внимание на последний результат. При больших объёмах данных поиск будет занимать длительное время.
G>В итоге ты заменил одно O(n) на другое O(n). G>Но тебе повезло и ты ошибся. После binary search надо вставить элемент в позицию, найденную уже binary search, что приводит к общей сложности выполнения O(log n).
Тут ты тоже ошибся. В другом сообщении подсказывают, что будет O(n log n). Я бы вообще заменил на такое O(n)
def use_dict(tokeniter):
tokens_dict = {}
for token in tokeniter:
if not tokens_dict.has_key(token):
tokens_dict[token] = len(tokens_dict)
tokens = range(len(tokens_dict))
for token in tokens_dict:
tokens[tokens_dict[token]] = token
return tokens
Тогда на 10 000 и 20 000 получил бы
10000 : 0.00624857580812
20000 : 0.0121497736856
Здравствуйте, monax, Вы писали:
M>Здравствуйте, gandjustas, Вы писали:
M>>>Как думаешь, что будет с этим кодом, если дать на вход пару миллионов элементов? G>>В случае с парой миллионов элементов этот код не имеет смысла если множество различных токенов не ограничено сверху. Ну получишь таким кодом (2*10^6 — 1) и что ты с ними дальше делать будешь?
M>обрабатывать буду. я взял это не с потолка, у меня есть задачи (немного, но есть), в которых приходится обрабатывать 1-1.5 млн уникальных объектов
Каким образом обрабатывать?
G>>В итоге ты заменил одно O(n) на другое O(n). G>>Но тебе повезло и ты ошибся. После binary search надо вставить элемент в позицию, найденную уже binary search, что приводит к общей сложности выполнения O(log n).
M>Тут ты тоже ошибся. В другом сообщении подсказывают, что будет O(n log n).
Прочитай внимательно что я писал.
M>
M>def use_dict(tokeniter):
M> tokens_dict = {}
M> for token in tokeniter:
M> if not tokens_dict.has_key(token):
M> tokens_dict[token] = len(tokens_dict)
M> tokens = range(len(tokens_dict))
M> for token in tokens_dict:
M> tokens[tokens_dict[token]] = token
M> return tokens
M>
M>Тогда на 10 000 и 20 000 получил бы M>10000 : 0.00624857580812 M>20000 : 0.0121497736856
Ты еще не понял что в стандартной библиотеке C# есть функция distinct, которая делает то что нужно, быстро и не требует знания алгоритмов?
Здравствуйте, gandjustas, Вы писали:
M>>Всё это прикладной уровень, но без знания алгоритмов твоя программа будет работать по коду из задачи, что приведёт к потере машинного времени, да и результата ты можешь не дождаться несколько дней. G>Да-да-да... G>1)Вставка и поиск в массиве: 2 минуты G>2)Поиск в отсортированном массиве: 4 секунды G>3)tokeniter.Distinct(): 0.3 секунды
Сравнение с Distinct некорректно, т.к. Distinct теряет порядок следования элементов.
Здравствуйте, gandjustas, Вы писали:
G>Ты еще не понял что в стандартной библиотеке C# есть функция distinct, которая делает то что нужно, быстро и не требует знания алгоритмов?
ты ещё не понял, что distinct делает не то, что нужно в задаче?
Здравствуйте, Lloyd, Вы писали:
L>Сравнение с Distinct некорректно, т.к. Distinct теряет порядок следования элементов.
Как это теряет? Судя по коду, ничего он не теряет.
Здравствуйте, MxMsk, Вы писали:
L>>Сравнение с Distinct некорректно, т.к. Distinct теряет порядок следования элементов. MM>Как это теряет? Судя по коду, ничего он не теряет.
был не прав, когда писал. правильнее "не гарантирует".
Здравствуйте, MxMsk, Вы писали:
L>>был не прав, когда писал. правильнее "не гарантирует". MM>В оригинале: MM>
MM>The result sequence is unordered.
MM>Думаю то, что не применяется никакого упорядочивания не означает, что исходный порядок нарушается. Может есть какие-то уточнения?
Это так же означает, что не гарантируется, что порядок сохраняется, если не сказано иного.
На самом деле, ты прав, по исходнику видно, что действительно порядок сохраняется.
Здравствуйте, Lloyd, Вы писали:
L>Это так же означает, что не гарантируется, что порядок сохраняется, если не сказано иного. L>На самом деле, ты прав, по исходнику видно, что действительно порядок сохраняется.
Так я теперь заволновался, гарантируют ли мне, что это поведение сохранится в будущем
Здравствуйте, monax, Вы писали:
M>Эта задача вполне прикладного уровня, а у этого кода O(n^2). Как думаешь, что будет с этим кодом, если дать на вход пару миллионов элементов? А простая оптимизация с двоичными поиском и вставкой в массив пары (token, порядок_вставки) даст что-то около O(log n) + O(n). Второе слагаемое — это стоимость вставки в отсортированный массив.
а зачем вставка в отсортированный массив? Есть же карты, основанные на rbtree, которые вполне себе O(log n) на вставку, поиск и удаление..
Здравствуйте, Libsdebs, Вы писали:
L>а зачем вставка в отсортированный массив? Есть же карты, основанные на rbtree, которые вполне себе O(log n) на вставку, поиск и удаление..
там в описании задачи просто есть пункт, что результирующий список содержит элементы в порядке их появления, поэтому я и не стал брать бинарное дерево. собственно и "порядок вставки" я хранил, чтобы развернуть его в необходимом порядке.
Здравствуйте, monax, Вы писали:
L>>а зачем вставка в отсортированный массив? Есть же карты, основанные на rbtree, которые вполне себе O(log n) на вставку, поиск и удаление.. M>там в описании задачи просто есть пункт, что результирующий список содержит элементы в порядке их появления, поэтому я и не стал брать бинарное дерево. собственно и "порядок вставки" я хранил, чтобы развернуть его в необходимом порядке.
ищем в карте(множество), если нет такого, то вставляем и в карту, и в массив. если элемент данных имеет большой размер, то в массив вставляем ссылку на элемент в карте.
Здравствуйте, Libsdebs, Вы писали:
L>ищем в карте(множество), если нет такого, то вставляем и в карту, и в массив. если элемент данных имеет большой размер, то в массив вставляем ссылку на элемент в карте.
карта — это HashMap? если да, то подобное решение я и предложил выше:
def use_dict(tokeniter):
tokens_dict = {}
for token in tokeniter:
if not tokens_dict.has_key(token):
tokens_dict[token] = len(tokens_dict)
tokens = range(len(tokens_dict))
for token in tokens_dict:
tokens[tokens_dict[token]] = token
return tokens
здесь {} — это создание ассоциативного массива, в котором объекты выступают в качестве ключей. размер элемента данных значения не имеет, потому что в питоне операция a = b копирует ссылку, а не создаёт копию обьекта.
Здравствуйте, monax, Вы писали:
L>>ищем в карте(множество), если нет такого, то вставляем и в карту, и в массив. если элемент данных имеет большой размер, то в массив вставляем ссылку на элемент в карте. M>карта — это HashMap? если да, то подобное решение я и предложил выше:
карта — это карта. которая согласно википедии часто реализуется через "hash table", либо "self-balancing binary search tree " http://en.wikipedia.org/wiki/Associative_array
То что вы использовали в новом варианте называется python dictionary, что можно назвать картой.
Кстати о сабже, то есть признаёте, что первоначально предложили левый алгоритм с "плохой" сложностью?
Здравствуйте, Libsdebs, Вы писали:
L>Кстати о сабже, то есть признаёте, что первоначально предложили левый алгоритм с "плохой" сложностью?
я признаю, что первоначально предложенное решение не является лучшим, но оно будет работать быстрее, чем код в задаче. вот пример того, как я это представлял с использованием двоичного поиска:
def use_bin_search(tokeniter):
def __insert(tokens_list, item):
first = 0
length = len(tokens_list)
last = length
if last == 0:
tokens_list.append((item, length ))
elif tokens_list[0][0] > item:
tokens_list.insert(0, (item, length))
elif tokens_list[last - 1][0] < item:
tokens_list.append((item, length))
else:
while first < last:
middle = (first + last) / 2
if item <= tokens_list[middle][0]:
last = middle
else:
first = middle + 1
if tokens_list[last][0] != item:
tokens_list.insert(last, (item, length))
tokens = []
for token in tokeniter:
__insert(tokens, token)
tokens_dict = {}
for t in tokens:
tokens_dict[t[1]] = t[0]
tokens = [tokens_dict[k] for k in sorted(tokens_dict)]
return tokens
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
А>А смотришь на их результат — интерфейсы все как один говно, система тормозит от этих ваших гибернейтов нещадно (кстати, до сих пор не понимаю как эта жирная, убогая ОРМ может помочь при разработке хоть большой, хоть малой ИС). За код который они пишут, у нас в команде убивают без суда и следствия.
А я устал от "хардкорных" сишников, кричащих, что их окно с меню из 3х пунктов запускается моментально и занимает на диске 23 килобайта. При этом, абсолютно неспособных написать приложение для бухгалтера из 30 типов форм и 30 таблиц и десятка отчетов, в условиях постоянно меняющихся требований. Да еще чтобы оно не текло. Да еще, чтобы после изменений релиз можно было выкатывать на следующий день.
Если же оно впервые в жизни ими пишется, часто открывается понимание, что "тот велосипед который от которого я так торчал всю прошлую неделю и юзаю теперь повсеместно, оказывается называется фабричный метод", а исправляя в сотый раз косяки самоконструируемого SQL приходится с завистью поглядывать на джавистов с их Hibernate. А когда приложение через 3 года вырастет до 45!!! типов формочек — придет осознание, что надо все нафик выкинуть и переписать на java или .net. Фиг с ними с тормозами, оно по крайней мере сможет работать не падая и добавление очередной формы не будет превращаться в месячный НИОКР. А робкий вопрос бухгалтера: "мне бы вот тут галочку, чтобы можно было переключать вывод людей и гвоздей", перестанет делать из программиста рычащее животное. Вот тогда этот сишник за пару месяцев освоит NET, J2EE, LINQ, ASP, JSP, Hibernate, Spring ибо будет понимать, что это, какую задачу решает и почему сделано именно так.
Неужели формошлепство и вывод всяких табличек — единственная задача, с которой сталкиваются большинство местного населения?
А если замутить автоматическую генерацию формочек и воткнуть нормальный орм, намутить бухгалтерский дсл, то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
А>то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
Идеальный сферический дилетант детектед.
Никто не захочет делать работу программиста, потому что ему уже платят, чтобы он делал эту работу.
Проверено сотни тысяч миллионов раз на примере всяких построителях отчетов, шедулерах экспортов, УИ для описания валидаций и бизнес-правил. Как бы ты удобно не сделал, пользоваться этим будешь сам, потому что у других людей своя работа и им проще заставить тебя, чем разбираться в "бухгалтерском ДСЛ".
Здравствуйте, Антихрист, Вы писали:
А>Неужели формошлепство и вывод всяких табличек — единственная задача, с которой сталкиваются большинство местного населения?
Ты не поверишь, но вообще в IT это минимум 90% задач. Они унылы, но за них платят. Не то, чтобы очень много, но найти работу в формоклепательстве(в т.ч. и вебе) проще всего. Многие не парятся, хотя меня от этого немного подташнивает.
А>А если замутить автоматическую генерацию формочек и воткнуть нормальный орм, намутить бухгалтерский дсл, то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
Когда писали 1С, тоже думали нечто похожее. Но в этом подходе оказалось много подводных камней. Начиная с того, что далеко не всегда задача может быть решена автоматическими средствами(я уже не говорю про случаи, когда нужна интеграция с другими программами), и заканчивая тем, что бухи чаще всего ни за какие деньги не желают разбираться в программировании, а те, кто разберется, могут свалить с этой работы в какой-нибудь интегратор 1С-ником, где ему заплатят больше, чем жаба этого директора может себе позволить платить "немного разобравшемуся в смежной отрасли" буху, ибо спрос на 1с-ников выше.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E__>Здравствуйте, Антихрист, Вы писали:
А>>Неужели формошлепство и вывод всяких табличек — единственная задача, с которой сталкиваются большинство местного населения?
E__>Ты не поверишь, но вообще в IT это минимум 90% задач. Они унылы, но за них платят. Не то, чтобы очень много, но найти работу в формоклепательстве(в т.ч. и вебе) проще всего. Многие не парятся, хотя меня от этого немного подташнивает.
Прямо так и 90? Откуда цифры? 90% ТВОЕЙ работы?
Зырь сюды http://www.itjobswatch.co.uk/jobs/uk/statistics.do
А>>А если замутить автоматическую генерацию формочек и воткнуть нормальный орм, намутить бухгалтерский дсл, то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
E__>Когда писали 1С, тоже думали нечто похожее. Но в этом подходе оказалось много подводных камней. Начиная с того, что далеко не всегда задача может быть решена автоматическими средствами(я уже не говорю про случаи, когда нужна интеграция с другими программами), и заканчивая тем, что бухи чаще всего ни за какие деньги не желают разбираться в программировании, а те, кто разберется, могут свалить с этой работы в какой-нибудь интегратор 1С-ником, где ему заплатят больше, чем жаба этого директора может себе позволить платить "немного разобравшемуся в смежной отрасли" буху, ибо спрос на 1с-ников выше.
Ну, в общем, целей то почти добились. Заместо дорогих девелоперов можно держать пару другую 1с-ников.
Здравствуйте, avpavlov, Вы писали:
А>>то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
A>Идеальный сферический дилетант детектед.
A>Никто не захочет делать работу программиста, потому что ему уже платят, чтобы он делал эту работу.
A>Проверено сотни тысяч миллионов раз на примере всяких построителях отчетов, шедулерах экспортов, УИ для описания валидаций и бизнес-правил. Как бы ты удобно не сделал, пользоваться этим будешь сам, потому что у других людей своя работа и им проще заставить тебя, чем разбираться в "бухгалтерском ДСЛ".
Ха ха ха )))!!!
Сразу видно — гуру. Не понты кидать пришел, а расставлять всех на свои места. Заткнуть всех этих недоучек!
Смени работу лучше. В нормальных компаниях для таких задач держат системных аналитиков.
Здравствуйте, Антихрист, Вы писали:
А>Наболело. А>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
Какие страшные слава.. вот у нас в проекте, ни одной базы данных, ни одной формочки, ни одного дотнета, ни одной джавы и т.п.
А>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
Может вам лучше работу другую поискать? На вашем текущем месте быдлокодеры врядли в одночасье "опомнятся", тем более если проект ориентирован на формоклепательство.
Здравствуйте, Libsdebs, Вы писали:
L>Здравствуйте, Антихрист, Вы писали:
А>>Наболело. А>>Девелоперы. Которые так и сыплют абревиатурами и лейбами NET, J2EE, LINQ, ASP, JSP, Hibarnate, Spring, наизусть знают ООП паттерны. Млеют от того насколько они круто развернут за день распределенную высоконагруженную систему.
L>Какие страшные слава.. вот у нас в проекте, ни одной базы данных, ни одной формочки, ни одного дотнета, ни одной джавы и т.п.
А>>Мое мнение — в стране нужно ввести жесткое лицензирование для программистов с требованиями по знаниям всех парадигм, 2-3 ЯП, и годного матана.
L>Может вам лучше работу другую поискать? На вашем текущем месте быдлокодеры врядли в одночасье "опомнятся", тем более если проект ориентирован на формоклепательство.
Я уже говорил, что быдлокодеры — не мои коллеги. Просто, порой приходится копаться в мартышкинских программах.
Здравствуйте, Антихрист, Вы писали:
L>>Может вам лучше работу другую поискать? На вашем текущем месте быдлокодеры врядли в одночасье "опомнятся", тем более если проект ориентирован на формоклепательство. А>Я уже говорил, что быдлокодеры — не мои коллеги. Просто, порой приходится копаться в мартышкинских программах.
Ну что поделать, это работа.
Мне например тоже иногда приходится копаться в говнокоде, причём когда я переделываю код по-нормальному, с чёткой ясной структурой, со сложностями O(1) вместо O(log N), с O(N) вместо O(N log N), эти говнокодеры "сердечно" обижаются, и потом пытаются придраться к каждой мелочи.
Но к счастью например мне это приходится делать редко.
Но да, порой разбираешься в коде и так и хочется написать комментарий — "так программируют только м@дakи" (@ потому что на этом форуме, это слово немного вне закона)
А>>>Неужели формошлепство и вывод всяких табличек — единственная задача, с которой сталкиваются большинство местного населения?
E__>>Ты не поверишь, но вообще в IT это минимум 90% задач. Они унылы, но за них платят. Не то, чтобы очень много, но найти работу в формоклепательстве(в т.ч. и вебе) проще всего. Многие не парятся, хотя меня от этого немного подташнивает.
А>Прямо так и 90? Откуда цифры? 90% ТВОЕЙ работы?
Лень вдаваться в подробности, но статистика по UK, где очень много финансовых учреждений(в том числе и рисково-инвестиционных), мягко говоря не показательна. Там действительно нужно шарить в теорвере, статистике и т.д. Но обычной конторе "купи-продай" это нафиг не уперлось.
А>>>А если замутить автоматическую генерацию формочек и воткнуть нормальный орм, намутить бухгалтерский дсл, то вобщем-та и прогер уже не нужен будет. Директору достаточно повысить з/п первому же буху, желающему освоить нужный интрумент и — вуаля!
E__>>Когда писали 1С, тоже думали нечто похожее. Но в этом подходе оказалось много подводных камней. Начиная с того, что далеко не всегда задача может быть решена автоматическими средствами(я уже не говорю про случаи, когда нужна интеграция с другими программами), и заканчивая тем, что бухи чаще всего ни за какие деньги не желают разбираться в программировании, а те, кто разберется, могут свалить с этой работы в какой-нибудь интегратор 1С-ником, где ему заплатят больше, чем жаба этого директора может себе позволить платить "немного разобравшемуся в смежной отрасли" буху, ибо спрос на 1с-ников выше.
А>Ну, в общем, целей то почти добились. Заместо дорогих девелоперов можно держать пару другую 1с-ников.
В общем случае да, но, во-первых, 1с-ники тоже не очень дешевы, а во-вторых, когда нужно будет что-то основательно поменять в бизнес процессах, задачу все равно придется аутсорсить — пара 1с-ников это исключительно поддержка(и то, это если в компании не особо упоротые маркетоиды, а то и целый отдел придется только для поддержки держать).
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Libsdebs, Вы писали:
L>Но да, порой разбираешься в коде и так и хочется написать комментарий — "так программируют только м@дakи" (@ потому что на этом форуме, это слово немного вне закона)
В какой-то момент внезапно выясняется, что этот код — твой собственный, написанный пару лет назад. У меня такое иногда случается.
Здравствуйте, Антихрист, Вы писали:
А>Меня эти товарищи, на самом деле мало интересуют. Просто они как тов. Паниковский — портят рынок.
Ты что-то путаешь! Портят девок, а не рынок!
А>>>И все эти прогеры, как один, взахлеб кричат о бесполезности математики. Фак! Как программист может кичиться незнанием дискретки, алгоритмов и логики?
Так же, как и знанием. Обе стратегии глупы.
___>>Задачи разные бывают. Очень сильно разные. Пока создается впечатление что Вы кичитесь своим знанием математики и не очень в тему.
+100500
А>Ну приведите мне программистскую задачу, нетребующую знания математики.
Написать программу проверки орфографии. Когда напишешь, сделать такой плагин в твой браузер, что ты перестанешь отправлять непроверенные сообщения с ошибками...
А>Все, что востребовано в computer science
А можно поконкретнее. Что такое из матана в CS востребовано?
"Матан" -- это "Математический анализ, при помощи бесконечно малых величин", или что-то другое имеется в виду?..
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, voxel3d, Вы писали:
V>Здравствуйте, Andrey.V.Lobanov, Вы писали:
AVL>>"не знаешь матан — пойдёшь на метан". как-то так вроде, точную цитату не помню.
V>И что интересно, эта цитата родилась когда-то по мотивам творчества топикстартера. )
Не, не моего. Случайно ник совпал с ником Луговского на лоре.
Здравствуйте, mrTwister, Вы писали:
E>>А можно поконкретнее. Что такое из матана в CS востребовано? T>Число Пи, сроки на него умножаются. Правда это не совсем матан.
Соглашаясь по сути с такой особенностью сроков, тем не менее, не могу не заметить, что это ещё и не CS, к тому же...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском