Есть такое в Tixati. Я на него с uTorrenta ушел.
Если привыкнуть к нестандартному GUI то очень неплохой клиент.
Кстати лучше всех ищет по DHT. Проверено.
Про сложность понятно. Хоть и ИМХО вы не правы про инфраструктуру и сложность. Она довольно проста и логична. Я вообще считаю что Qt лучший на данный момент пример использования «классического» ООП.
А вот по поводу кроссплатформенности за пределами поддерживаемых систем можно подробнее? Ибо список систем довольно большой и мне интересно где вы не могли Qt использовать.
По поводу Андроида — использовать QtCore в нативной c++ библиотеке вроде не составляет проблемы. Особенно если вы отказываетесь от сигналов/слотов (тогда не надо организовывать Qt-очередь сообщений).
По поводу велосипедов — я принципиально не согласен. Они применимы только в одном случае — требования железа(производительность, ограниченность ресурсов и т.д.). Во всех остальных случаях они нежелательны в том числе по причине проблем с поддержкой. Смениться основной разработчик и будут проблемы.
Так раскройте причины такого решения. Ибо единственные вами указанны — размер(решается модульностью) и минимум зависимостей(а как же зависимость от того же Qt для GUI).
Реальная минимизация зависимостей возможна при отказе от кроссплатформенности (писать на MFC/WinAPI например). Иначе сразу возникает дублирование уже имеющегося — что по настоящему очень мало когда действительно требуется.
Вот уже не первый раз вижу полное не понимание Qt.
Уже с 4 версии он совсем не GUI-библиотека. Это полноценный кроссплатформенный фреймворк.
По поводу объемности — снова незнание структуры Qt. Как раз ваши классы обертки можно полностью заменить QtCore. Получив из коробки платформонезависимый код (работающий так же на Android и iOS) для файловой системы, unicode-строк, многопоточности и много еще что. Причем оверхед там минимальный. Я бы еще понял что вы C++14 используете там наконец много такое появилось (потоки и файлы).
В виде бонуса с Qt — вы получаете сигналы/слоты и классы для организации собственных структур данных (я про QSharedData и т.п.).
В принципе верно. Но мы говорим про то базовые это знания или нет для программиста.
Я считаю что нет. При этом для общего образования надо знать на базовом уровне.
Но есть один момент грамматики это вещь ИМХО довольно узкая и нужна для разработчиков языков например и еще для нескольких таких же узких областей.
И в дополнение — если вы умеете учиться (а это основной навык хорошего программиста) то всегда быстро научитесь как что-либо применять. Да и не забывайте мы живем в мире интернета — а значит там можно выяснить что в решении стоящей перед вами задачи подойдут грамматики, после чего их можно будет изучить.
Учитывая фразу «удиви меня» — ее дали не из за требований вакансии а по причине выпендрежности программиста-собеседователя.
Для уточнение расскажите о своей области. Пока у меня складывается мнение что именно узкая или вообще веб-разработка.
По поводу любопытства вы явно не читаете что я написал. Я же сказал что для общего образования и развития желательно изучать. Но на собеседованиях спрашивать только в исключительных случаях, мной описанных.
По поводу ВУЗа — вы опять невнимательно прочитали. Я именно что прав и вы это подтвердили. Так как получили образование инженера конструктора. Я учился по программе инженера программиста в университете — там грамматик и языков не было. А то что называется компиляторы — тоже было но без грамматик и конечных автоматов и тем более без написания компиляторов. Только базовые основы. Из математики только машина тьюринга.
По поводу первого пункта — это верно только при условии что в вакансии заранее указанно что строго требуются глубокие знания в области парсеров, регулярных выражений, конечных автоматов, и всего такого. Тогда работодатель открыто заявляет что ищет специалиста работавшего в данной области и имеющего опыт работы в ней. Ищущий да обрящет. Хотя искать он может долго ибо область узкая.
По поводу ВУЗа — я сужу по тому что грамматики и языки программистам стали преподавать после развала союза. До этого в основном налегали на базовую математическую основу. И единственный вариант что вы их изучали в то время — тот что вы учились на другой специальности — например «Прикладная математика».
По поводу нужности грамматик — я с вами расхожусь кардинально. Я считаю что они нужны только для общего образования и к квалификации не имеют никакого отношения. И проблема не в тривиальности а в том что все знать невозможно. И за 10 лет работы в разработке вы можете столкнутся с тем что они вам ни разу не понадобятся.
Про криптографию не понял претензии. Я привел пример меня любимого. То что я в криптографии был полным нубом при устройстве и мне это не помешало в короткие сроки изучить все что надо.
По поводу языков и грамматик — это типичнейшее заблуждение выпусников постсоветских вузов. Это совсем не базовые структуры и незнание их ничего не меняет ибо действительно разбираться в этом требуется только в узкой области разработки.
Что не отменяет полезности общих знаний по данной теме, как и вообще постоянной учебы.
И вот опять вы про студента-отличника или узкого специалиста.
Я например несмотря на то что учился в институте на профессию инженер-программист — грамматики не изучал. В работе мне их знание никогда не требовалось. Причем я не веб-разработчик. А программист на C++ в энтерпрайзе.
Во всех местах где я работал была совершенно новая для меня предметная область. Например в текущем месте работа криптография и смарт-карты. Это не помешало мне в ней разобраться и работать ведущим разработчиком.
Непосредственные заученные знания это пыль на ветру. Развеивается сразу после заучивания. Важно знать основы. Методологию. Изучать их постоянно. И главное — то чему меня в моем универе научили — это уметь получать новые знания когда требуется.
По вашему описанию постановки задачи — соискателю должен быть дан еще и доступ к интернету и время для поиска.
А вы ищете человека который вам будет сортировки писать?
Программист не должен помнить все и вся алгоритмы. Он должен уметь программировать. Хороший программист еще должен уметь искать и обрабатывать информацию. А Senior еще должен быстро входить в любую предметную область.
Я не точно выразился. Имел в виду заучивать все вариации формата регулярных выражений.
И вообще основной смысл в том что не стоит оценивать программиста по знаниям из справочников. Это работает только если ищете узкого специалиста в конкретной области.
А вы не задумывались о том что разработчик не обязан держать в голове все возможные алгоритмы и области применения. Если мне потребуется парсить выражение — то я пороюсь в инете и выберу лучший для решения способ и потом его реализую(или использую готовый) в контексте задачи.
А ваша позиция пригодна для тестирования студента на знание алгоритмов и выявление потенциала его как программиста.
С опытом приходит понимание что все это детские игры. Я с подобных собеседований ухожу сразу. Ибо работать там скорее всего будет не комфортно.
Главное для реально хорошего программиста — это умение находить решение оптимальное для задачи, а не заучивать регулярные выражения и вариации парсеров. Поиск и обработка информации — наше все.
Если привыкнуть к нестандартному GUI то очень неплохой клиент.
Кстати лучше всех ищет по DHT. Проверено.
А вот по поводу кроссплатформенности за пределами поддерживаемых систем можно подробнее? Ибо список систем довольно большой и мне интересно где вы не могли Qt использовать.
По поводу Андроида — использовать QtCore в нативной c++ библиотеке вроде не составляет проблемы. Особенно если вы отказываетесь от сигналов/слотов (тогда не надо организовывать Qt-очередь сообщений).
По поводу велосипедов — я принципиально не согласен. Они применимы только в одном случае — требования железа(производительность, ограниченность ресурсов и т.д.). Во всех остальных случаях они нежелательны в том числе по причине проблем с поддержкой. Смениться основной разработчик и будут проблемы.
А почему такие жесткие ограничения?
Реальная минимизация зависимостей возможна при отказе от кроссплатформенности (писать на MFC/WinAPI например). Иначе сразу возникает дублирование уже имеющегося — что по настоящему очень мало когда действительно требуется.
Уже с 4 версии он совсем не GUI-библиотека. Это полноценный кроссплатформенный фреймворк.
По поводу объемности — снова незнание структуры Qt. Как раз ваши классы обертки можно полностью заменить QtCore. Получив из коробки платформонезависимый код (работающий так же на Android и iOS) для файловой системы, unicode-строк, многопоточности и много еще что. Причем оверхед там минимальный. Я бы еще понял что вы C++14 используете там наконец много такое появилось (потоки и файлы).
В виде бонуса с Qt — вы получаете сигналы/слоты и классы для организации собственных структур данных (я про QSharedData и т.п.).
Я считаю что нет. При этом для общего образования надо знать на базовом уровне.
Но есть один момент грамматики это вещь ИМХО довольно узкая и нужна для разработчиков языков например и еще для нескольких таких же узких областей.
И в дополнение — если вы умеете учиться (а это основной навык хорошего программиста) то всегда быстро научитесь как что-либо применять. Да и не забывайте мы живем в мире интернета — а значит там можно выяснить что в решении стоящей перед вами задачи подойдут грамматики, после чего их можно будет изучить.
Для уточнение расскажите о своей области. Пока у меня складывается мнение что именно узкая или вообще веб-разработка.
По поводу любопытства вы явно не читаете что я написал. Я же сказал что для общего образования и развития желательно изучать. Но на собеседованиях спрашивать только в исключительных случаях, мной описанных.
По поводу ВУЗа — вы опять невнимательно прочитали. Я именно что прав и вы это подтвердили. Так как получили образование инженера конструктора. Я учился по программе инженера программиста в университете — там грамматик и языков не было. А то что называется компиляторы — тоже было но без грамматик и конечных автоматов и тем более без написания компиляторов. Только базовые основы. Из математики только машина тьюринга.
По поводу ВУЗа — я сужу по тому что грамматики и языки программистам стали преподавать после развала союза. До этого в основном налегали на базовую математическую основу. И единственный вариант что вы их изучали в то время — тот что вы учились на другой специальности — например «Прикладная математика».
По поводу нужности грамматик — я с вами расхожусь кардинально. Я считаю что они нужны только для общего образования и к квалификации не имеют никакого отношения. И проблема не в тривиальности а в том что все знать невозможно. И за 10 лет работы в разработке вы можете столкнутся с тем что они вам ни разу не понадобятся.
По поводу языков и грамматик — это типичнейшее заблуждение выпусников постсоветских вузов. Это совсем не базовые структуры и незнание их ничего не меняет ибо действительно разбираться в этом требуется только в узкой области разработки.
Что не отменяет полезности общих знаний по данной теме, как и вообще постоянной учебы.
Я например несмотря на то что учился в институте на профессию инженер-программист — грамматики не изучал. В работе мне их знание никогда не требовалось. Причем я не веб-разработчик. А программист на C++ в энтерпрайзе.
Во всех местах где я работал была совершенно новая для меня предметная область. Например в текущем месте работа криптография и смарт-карты. Это не помешало мне в ней разобраться и работать ведущим разработчиком.
Непосредственные заученные знания это пыль на ветру. Развеивается сразу после заучивания. Важно знать основы. Методологию. Изучать их постоянно. И главное — то чему меня в моем универе научили — это уметь получать новые знания когда требуется.
По вашему описанию постановки задачи — соискателю должен быть дан еще и доступ к интернету и время для поиска.
Программист не должен помнить все и вся алгоритмы. Он должен уметь программировать. Хороший программист еще должен уметь искать и обрабатывать информацию. А Senior еще должен быстро входить в любую предметную область.
И вообще основной смысл в том что не стоит оценивать программиста по знаниям из справочников. Это работает только если ищете узкого специалиста в конкретной области.
А ваша позиция пригодна для тестирования студента на знание алгоритмов и выявление потенциала его как программиста.
С опытом приходит понимание что все это детские игры. Я с подобных собеседований ухожу сразу. Ибо работать там скорее всего будет не комфортно.
Главное для реально хорошего программиста — это умение находить решение оптимальное для задачи, а не заучивать регулярные выражения и вариации парсеров. Поиск и обработка информации — наше все.
Мы не на соревновании.