• Как придумывать осмысленные имена для классов?

    @ubuntuman
    Beginner developer
    В последнее время для названий переменных я использую описание содержимого (пример: pages, currentIndex, countSteps, lastColor),
    для функций описание действия (пример: createNewPicture, saveToFile, removeLastPage, getCountElements),
    а для классов либо краткое описание, либо слова с приставкой -er (пример: BlockSplitter, PagesStore, ColorsManager, TextFormatter). Разумеется, часто слова повторяются. Если это для хранения, то тут Store, если для управления, то manager, controller, если для разделения/фильтрации, то Sepatator, Splitter и т.д. Если не могу подобрать ничего знакомого, лезу в переводчик, вбиваю слово и ищу наиболее простой и "красивый" вариант перевода, его и использую.

    Не знаю, нормально ли это, но мне пока нравится…
    Ответ написан
    Комментировать
  • Какую выбрать платформу для разработки сложного кроссплатформенного приложения с GUI?

    Важна кросплатформенность (Win, Linux, может даже OS X) и возможность создавать сложные интерфейсы.

    Qt. Но C++, что может не совмещаться со следующим требованием:

    важна скорость разработки

    Python + PyQt

    На ум приходит Eclipse, но опыта с ней нет и толком не понятно, можно на ее базе сделать описанное или нет.

    Eclipse это среда разработки, созданная преимущественно для разработки на Java, что тоже хороший вариант. Наверняка Swing способен на всё, что вас интересует.
    Ответ написан
    Комментировать
  • С чего лучше начать изучать ООП?

    Vestail
    @Vestail
    Software Engineer
    В который рас кидаю ссылку, книги по дизайну и ООП.
    Ответ написан
    Комментировать
  • Что быстрее C++ или Java (вывод строк в консоль)?

    @asd111
    Лучше не выводите ничего в консоль если нет необходимости. Эта операция очень медленная сама по себе.
    Ответ написан
    Комментировать
  • Как обстоят дела с программным обеспечением на огромных объектах?

    bobrovskyserg
    @bobrovskyserg
    Програмное обеспечение на огромных объектах работает в штатном и нештатном режимах.
    К примеру, на авианосце так оно и работает.
    О написании надёжного ПО можно узнать больше из информационной сети "интернет".
    Ваш капитан первого ранга О.
    Ответ написан
    2 комментария
  • Как обойти глюк Eclipse C++?

    Adamos
    @Adamos
    Месяцы борьбы с Eclipse CDT, в том числе и с ошибкой "could not be resolved", у меня лично завершились тактическим отступлением на QtCreator.
    Eclipse - один из самых неудобных IDE для С++, которые я когда-либо видел. Именно из-за того, что никогда не поймешь, будет что-то работать после настройки или нет. И, тем более, будет ли оно работать после очередного обновления.
    Ответ написан
    3 комментария
  • Как объединить массивы на c++?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Использовать std::vector и его метод append в частности.
    Ответ написан
    2 комментария
  • Как попасть в IT-сферу без опыта и образования?

    jawakharlal
    @jawakharlal
    не слушай никого.
    вообще на русских форумах нельзя просить советов - тебя всячески отговорят от затеи.
    поэтому - если те нравится программировать - можешь пойти в любую студию - они тебя возьмут - хотя бы как ученика.
    Ответ написан
    Комментировать
  • Какой должна быть идеальная модель IT-инфраструктуры абстрактного предприятия?

    ifaustrue
    @ifaustrue
    Пишу интересное в теллеграмм канале @cooladmin
    Такс, если рассматривать практическую сторону, то:
    1. У вас обязательно грамотно построена сеть, с разнесением всё на отдельные сегменты и делением на уровень доступа и ядро. Это могут быть как простые гигабитные свичи, так и что-то более серьёзное (отдельно l2 коммутаторы, ядро - на l3) решение. Все вайфай сети отдельно, телефония отдельно. Несколько провайдеров с автопереключением. Между офисами (если их несколько) туннели с IPSec и OSPF, ведь у вас обязательно по два канала в каждом удалённом офисе. Внутри локальных сетей у вас обязательно протокол семейства stp следит за петлями и сходимостью, и нигде нигде нет простых "мыльных" коробок аля дес1004 или что там сейчас помоешного выпускает длинк? Вся коммутация сделана заранее и ве имеющиеся порты заранее обспечены линком и вся сеть, что самое главное, к такому повороту готова.

    2. Хранение. У вас обязательно разнесено хранение данных от вычислительной обработки. Хотя бы на уровне абстракции (хотя в идеале - физически это разное железо). Хранение рассчитано на текущую нагрузку плюс резерв на момент наращивания мощностей (грубо говоря пока едут дополнительные диски - вы не упали под нагрузкой если вдруг припёрло). Доступы у вас через отдельные ip сети или через fc san (имхо, в данный момени это очень рядом). СХД умеет делать снепшоты и тонко выделять ресурсы. Так же она умеет а\синхронно реплицироваться (и у вас есть куда). Хранилка имеет +1 питание, +1 диск каждого типа и +1 голову контроллера. А так же +1 линк до вычислителей.

    3. Вычисление. У вас есть отдельные одинаковые железки на которых благодаря виртуализации вы развернули ферму вычислителей для основной ИС, а так же крутите всё ваше многообразие почтовых серверов и контроллеров домена. (кто-то скажет что КД в идеале крутить физически, возможно). Сервера рассчитаны с запасом минимум 1 штука, чтобы можно было смело смигрировать виртуалки и опустить его в мейнтейм.

    Про софт тоже могу накидать если нужно.
    Ответ написан
    4 комментария
  • Есть ли основные правила супер оптимизации?

    ErmIg
    @ErmIg
    Программист
    Есть развернутый ответ для С++ кода, но его можно обобщить и на другие языки и платформы:

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

    1) Важно понимать, что алгоритмическая оптимизация практически всегда может дать лучший эффект, чем программная. Так, если алгоритм имеет сложность O(n^2), то на больших исходных данных он при любой оптимизации будет медленнее, чем неоптимизированный алгоритм сложности O(n). Впрочем, при выборе алгоритма, опираться только на его сложность не стоит: если объем исходных данных не велик, то вполне может оказаться, что алгоритм со сложностью O(n^2) будет работать быстрее, чем с O(n).
    2) Очень важно повторное использование (кеширование) промежуточных данных, вычисленных в программе – ибо быстрее всего выполняется работа, которую не надо делать. Тем не менее, не надо чрезмерно кешированием увлекаться – если объем кэшируемых данных слишком велик, то это может отрицательно сказаться на общей производительности программы (некоторые данные быстрее вычислять на лету, чем считывать из памяти).
    3) Следует избегать излишнего копирования данных (например, передавать сложные типы данных по ссылке, а не по значению).
    4) По возможности следует избегать условных операторов во вложенных циклах. Так как условные переходы, вызываемые такими операторами, плохо обрабатываются современными процессорами с конвейерной архитектурой.
    5) Данные в памяти, которые используются алгоритмами, должны по возможности лежать упорядочено, и использоваться последовательно. Это позволит процессору их эффективно кешировать. Важно помнить, что доступ к кэшу процессора значительнее быстрее, чем к оперативной памяти.
    6) Если алгоритмы это позволяют, то возможно стоит реализовать их параллельное исполнение (в отдельных потоках или процессах). Это позволит эффективно задействовать современные многоядерные процессы.
    7) В некоторых случаях (например обработка изображений) большого эффекта можно достичь применением специализированных расширений процессора (SSE, SSE2, AXX, AVX2 и другие). Стоит отметить, что большинство современных компиляторов (GCC, MSVS, ICC) поддерживают непосредственное использование данных расширений непосредственно из С++ кода при помощи специальных встроенных функций (intrinsics). Минусами такого подхода является потеря переносимости (впрочем, эта проблема решается наличием разных веток программы под разные процессоры) и значительное усложнение программы.
    8) Также большого эффекта можно достичь применением специализированных ускорителей, например GPU (технологии CUDA, OpenCL). Минусами таких решений являются потеря универсальности и значительное усложнение программы, а также то, что на специализированных ускорителях, как правило, хорошо работает далеко не каждый алгоритм.
    Ответ написан
    Комментировать
  • Есть ли основные правила супер оптимизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Главное правило оптимизации - не заниматься преждевременной оптимизацией.

    Вообще все просто - пишите код, пишите нагрузочные тесты, профилируете, оптимизируете узкие места. С опытом ляпов будет меньше изначально. Ну и книжки стоит читать всякие, желательно обобщенные (типа там паттерны проектирования и т.д.) что бы можно было вместо оптимизации просто быстро систему масштабировать (это дешевле). Ну и еще теория алгоритмов помогает, если у вас есть именно обработка больших объемов данных (массивы на миллионы айтемов, на тысячах пофигу обычно)
    Ответ написан
    1 комментарий
  • Адекватная замена photoshop для ubuntu?

    bobrovskyserg
    @bobrovskyserg
    Два дня назад.

    А не желаете узнать, как искать гуглом?
    Ответ написан
    Комментировать
  • В каком возрасте можно (начать) заниматься программированием?

    God-emperor
    @God-emperor
    create a golden path
    Иди в органы. Зачем тебе вёрстка? Полиция всегда нормально зарабатывала и будет зарабатывать (честно или не честно - это отдельный разговор)
    Ответ написан
    Комментировать
  • Как направить программиста на путь истинный?

    @Evsign
    Бля, я не понимаю таких людей... Ну если тебе показывают, что твой код дерьмо собачее, то надо спросить почему и попросить показать как надо, а не пререкаться...
    Далеко с этим персонажем не уедете. ИМХО
    Такого сразу нахуй посылать надо, если не хочет учиться... "Аргументы" у него -- просто пиздец...
    Ответ написан
    Комментировать
  • Зачем нужен язык программирования С++?

    bobrovskyserg
    @bobrovskyserg
    За прочих не скажу, но знание языка С++ (хотя бы в объеме языка С) совершенно необходимо преподавателям языка С++.
    Ответ написан
    3 комментария
  • До какой температуры тело может нагреться?

    Moskus
    @Moskus
    Паяльник (к слову, нагреваться будет не только жало, но и корпус - теплоизоляция не идеальна) будет отдавать тепло через инфракрасное излучение и конвекционную теплоотдачу воздуху.
    Бонус - ответ по русскому языку: придел - архитектурный элемент православного храма. Предел - граница.
    Ответ написан
    Комментировать
  • Какой дистрибутив линукса накатить на нетбук?

    Meehalkoff
    @Meehalkoff
    Долго и упорно эксперементировал с операционками на своем нетбуке. Первое что пришло в голову установить - mint с mate. Самое плохое решение в моей жизни. Тормоза были дичайшие. Потом попробовал debian с xfce - в целом неплохо, но не то. После попробовал тоже самое, но с lxde. Нетбук стал работать заметно шустрее. Следующий этап - arch с openbox и tint2. Отличная производительность. Ничего лишнего. Все работает. После этого на глаза попала gentoo. Читая об особенностях установки софта подумал, что надо попробовать. Но gentoo - "кактус" и без слез не ставится, так что я погуглил и нашел calculate. На него накатил openbox, tint2 и нетбук стал работать еще бодрее, чем на arch.
    Ответ написан
    2 комментария
  • Какую библиотеку C/C++ выбрать для рисования графиков функции?

    MAKAPOH
    @MAKAPOH
    многостаночник
    Пару раз использовал qcustomplot, вещь годная.
    Ответ написан
    Комментировать
  • Есть ли альтернатива Excel?

    По отзывам получше понимает файлы созданные в MS Office чем конкуренты. www.wps.com/ru
    Ответ написан
    2 комментария