Linuxway (Страница 2) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#26 26-07-10 21:36:16

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Linuxway

Гареев Станислав пишет:

Так вот, там подход к разработке описывается: Сначала нарисовать интерфейс и даже с бумажным макетом, а потом только делать функциональную часть.. по сути быдлокодерство.

а) Ну вы вспомнили 6.0... Ппц) Даже слазил, год посмотрел, "В середине 1998 — вышла Visual Basic 6.0. После этого Microsoft резко изменила политику в отношении языков семейства Basic. Вместо развития Visual Basic, был создан абсолютно новый язык Visual Basic .NET, первая версия которого появилась в 2001. "

б) Начинать проект с разработки интерфейса... Напомните, эта книга (десятилетней давности) называлась "Как правильно организовывать проекты"?)) Мне почему-то показалось, что книга была не о том...

в) " а потом только делать функциональную часть.. " смотря, что имеется ввиду под функциональной частью. Разработка интерфейса - дело не плохое и важное. То, что в линухе часто на интерфейс плюют - хорошо?)

г) Ну и до кучи могу сказать, что сейчас в магазинах, к ужасу, не редко нахожу ошибки в разных книгах. И что? Пишут книги и пишут программы часто разные люди. К сожалению.

Редактировался Tiphon (26-07-10 21:39:19)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#27 26-07-10 21:36:31

Doppelganger
Участник
Зарегистрирован: 04-07-10
Сообщений: 444

Re: Linuxway

Mike22 пишет:

И чем же отрисовка интерфейса перед его наполнением является быдлокодерством? И что тогда не-быдлокодерство, сперва написать обработчики событий, а потом придумать под них интерфейс?

По понятным причинам авторы убрали первый пункт создания любой программы. вот как это должно было быть:
1) придумать концепцию и\или главный алгоритм работы программы (заметьте, придумать, а не написать в коде)
2) создать интерфейс
3) написать код
4-90000) отладка и доработка
но некоторые считают это быдлокодерсвом... smile  smile  smile  smile  smile



Ну так головой надо думать. По всякой мелочи чо бы не запустить скрипт? Но вот когда полные мудаки всё предлагают скриптами заебенеть, вот тогда полый пиздец начинается. © selenscy

Неактивен

#28 26-07-10 21:40:41

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Linuxway

Doppelganger пишет:

но некоторые считают это быдлокодерсвом...

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

Редактировался Tiphon (26-07-10 21:41:14)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#29 26-07-10 21:45:02

Doppelganger
Участник
Зарегистрирован: 04-07-10
Сообщений: 444

Re: Linuxway

Tiphon пишет:

Прекрасная, безглючная, удобная в настройке и установке, модульная

Ну не знаю. я бы сказал стабильная: стабильно работает или стабильно падает (зависит от погоды на марсе в момент установки и не зависит от кривизны рук пользователя)

Tiphon пишет:

операционная система линукс показывает бесспорное превосходство над быдлокодерскими конкурентами...

Если сейчас начать с нуля писать ОС то до какого-то момента - да. (время в мс я говорить не буду)



Ну так головой надо думать. По всякой мелочи чо бы не запустить скрипт? Но вот когда полные мудаки всё предлагают скриптами заебенеть, вот тогда полый пиздец начинается. © selenscy

Неактивен

#30 26-07-10 22:21:46

Doppelganger
Участник
Зарегистрирован: 04-07-10
Сообщений: 444

Re: Linuxway

Mike22 пишет:

Если кратко, то их можно описать так: не выебывайтесь (пишите максимально просто), придерживайтесь стиля и все комментируйте.

А разве я это отрицаю? Я с вами полностью согласен. Только эти правила относятся к

Doppelganger пишет:

3) написать код

Mike22 пишет:

К сожалению, в опенсорсе все три правила постоянно нарушаются.

Что есть - то есть.



Ну так головой надо думать. По всякой мелочи чо бы не запустить скрипт? Но вот когда полные мудаки всё предлагают скриптами заебенеть, вот тогда полый пиздец начинается. © selenscy

Неактивен

#31 26-07-10 22:43:59

whoknows
Гость

Re: Linuxway

Mike22 пишет:

И чем же отрисовка интерфейса перед его наполнением является быдлокодерством?

Там серия книг для быдлокодеров. "Программинг щ". У меня такая есть по VC++ и MFC. Они не программить учат, а IDE MSVS.

#32 26-07-10 22:47:41

whoknows
Гость

Re: Linuxway

Mike22 пишет:

Для больших проектов работают другие правила. Если кратко, то их можно описать так: не выебывайтесь (пишите максимально просто), придерживайтесь стиля и все комментируйте.

Максимально просто - у всех своё виденье этого макс. просто. Получается чушь собачья обычно.

Mike22 пишет:

Отдельно стоит отметить редко встречаемый в опенсорсе дефенсивный стиль программирования

что это такое?

Редактировался whoknows (26-07-10 22:48:10)

#33 27-07-10 00:23:32

whoknows
Гость

Re: Linuxway

Mike22 пишет:

Все подобные книги являются гибридом последовательных наборов примеров со справочником.

Там редкий майкрософтовский фимоз. Честное пианэрскае smile

Mike22 пишет:

Принцип "чем проще - тем лучше" довольно прозрачен и понятен - если то же самое можно написать короче и менее запутанно - значит так и нужно.

Скатывается все к использованию векторов (vector, ArrayList) везде где только можно, колбасни прямолинейного кода, кучи дополнительных ненужных проверок ("надёжность" (с)), которые щ код в спагетти и тд.

Про дефенсив понятно.
Кроме SQL (тут маст хэв), в приватных частях приложения (которые контролируются полностью разработчиком - private functions короче) ассерты можно ставить, чтобы в релиз эта ерунда вся не попала.
Ну и лучше тестировать до, чем во время smile Код без багов выпускать можно, но нужно тестировать и не "хэппи"-кликингом (руками), а многоуровневое тестирование всего чего только можно. Времени занимает много, но себя оправдывает потом на том, что стадии багфиксинга нет и кастомер доволен как слон.
Это моё имхо. Как на это смотрит юникс-вэй не знаю. Но качество гуишных прог пока "не очень" (4- максимум в среднем). smile

#34 27-07-10 00:50:05

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Linuxway

Mike22 пишет:

мы лишь можем использовать техники защитного программирования.

Главное - до крайностей не доходить) Крайности - везде плохи.

А С++ совершенно точно не заслуживает того круга задач, которые на нем кодят. У С, кстати, по заслугам - круг задач шире. Т.к. С++, в общем-то... это говно язык. С++ - это язык языков (по сути), который имеет 1001 минус (включая те минусы, которые ты в него внесешь своей библиотекой) и один плюс - может быть программы на нем будут работать быстрее. Но будучи перегруженным защитным программированием, кривизной архитектуры (которую создаст твоя команда) и стандартными проблемами организации ресурсов в больших проектах, эта быстрота часто скатывается до скорости  джавы и .нет, у которых с этими 1001 минусами заметно лучше. (.нет убраны почти все)

Редактировался Tiphon (27-07-10 00:50:58)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#35 27-07-10 01:04:44

whoknows
Гость

Re: Linuxway

Mike22 пишет:

А баги типа циклических анонимных указателей ведущих к потере памяти вообще очень распространены. Ну, типа, объект А ссылается на объект Б, который для каких-то кодерских нужд содержит ссылку на объект А, потом оба они удаляются и... память не освобождается, потому что на каждый из них есть ссылка. Для таких ситуаций придуманы weak-ссылки, но их мало кто использует.

Для таких штук щ профайлеры придумали smile
А также интеграционные тесты (для твоего примера). Безблагодатное это дело всё, но такова доля.

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

Tiphon пишет:

У С, кстати, по заслугам - круг задач шире. Т.к. С++, в общем-то... это говно язык.

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

На жабе кодить щ об'ективно - там меньше проблем и меньше оптимистичного поведения  "по умолчанию". (atoi - щ 0, если строка не int - бред сивой кобылы). Это дикая беда C (и С++ тоже).

Насчёт скорости - сам не проверял, но есть идейка портировать одну библиотеку с жабы на С++ и проверить.

#36 27-07-10 13:31:26

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Linuxway

whoknows пишет:

Не согласен - С++ умеет то же что и С. Никто не заставляет использовать С++ фичи в языке. Неправильный выбор - вина щ.

Не согласен)) При программировании на С для программеров сильно важно то, какой получается машинный код (когда ты программируешь под Qt или джаву - тебе обычно достаточно далеко до того, как каждая команда будет транслирована). Там срзу работают все правила, которые С-шники впитывают с молоком - располагайте  вместе используемые переменные рядом, чтобы попадали в одну страницу памяти и т.д. Действительно, можно использовать С++, как С с конструкторами, деструкторами и некоторыми другими удобными мелочами. И есть круг задач, для которых это будет оптимальным вариантом. Но С++ не может заменить в этом вопросе С, тк.к., по словам тех, кто занимается частью по С, компилятор С++ (gcc, intel, ms) выдает в таком режиме все не так, как в С. Я привел пример про переменные на одной странице памяти - мне, например,  рассказывали наши Иксперты по С, что под С++, (если его использовать, как С, с конструкторами, деструкторами и удобными мелочами), с этим все становится несколько сложнее.

whoknows пишет:

Правда, если писать говнокод, то легко скатиться к тому, что потом хрен за указателями уследишь, где и кто ими владеет.

Если писать любой код, то он идет к усложнению. Это нормальное явление. Именно явление, неотвратимое, как приливы и отливы. Вопрос, как ты решаешь проблемы и как ты к ним готов.

Берем С++. Я из тех, кто считает, что объект-ориентированный подход сокращает время разработки и более удобен для повторного использования частей и т.д. (Хотя есть люди, которые пишут статьи, что все не так). Вот мы начинаем писать на С++. И, предвидя крупный проект, начинаем мы с костылей. Делаем умные указатели, мудрые указатели и ряд других ходуль, чтобы ходить быстро и не падать. Часто приходим к тому, что делаем некий суперкласс. Переопределяем оператор new... Из-за мутности стандартной библиотеки мы, скорее всего, переделываем еще работу со строками,  коллекциями и подобными вещами - собираем велосипеды. Мы можем не собирать велосипеды, а брать готовые. Благо, библиотек существует множество. У них всех один большой минус - кто как хочет, так и дрочит. Хорошо если нашел что-то, что отлично вписывается в твой дизайн, но скорее это будет требовать некой переработки или обертки. Ну и т.д.

В итоге, то, как ты что-то используешь (банально даже выделение памяти)  начинает полностью зависеть от того, как у тебя все устроено. Язык в языке. Поэтому я и говорю, что С++ - язык языков.

Потом мы приходим к самому интересному.

К тому, что в больших проектах тебе надо управлять ресурсами. Разными. И менеджеры ресурсов нужны разные. Так или иначе нужно, например, управление и оптимизация памяти. Ну и т.д.

Так стойте! Но ведь все это уже придумано и сделано в .NET (и жабе). Причем нормально. Причем годами сидят группы очень сильных разработчиков, которые все это дело оптимизируют, по человечески разрабатывают и т.д.! Зачем тогда делать свои ходули, если можно брать машину и ехать? Причем ехать нормально, с кондиционером. Без этих 1001 какашка С++. Без разбора в уме аццких вложенных шаблонов. Аццких #define TRUE FALSE зависимостей и без  atoi - щ 0, если строка не int - бред сивой кобылы?

Вот и мой ответ, что на все эти минусы, в общем-то один плюс - можно (если сумеешь) сделать приложение чуточку быстрее.

И тут опа! А под .NET может быть менеджед С++. Который может совмещать и то, и другое... И по бенчмаркам он начинает, прям таки рвать (хотя памяти несколько больше жрет, да). Но тут, блин, беда, что это это присуще только MSVC компилятору. И делать такого, скажем, в gcc никто пока не будет. Есть правда llvm, но оно обладает теми же недостатками среднестатистических библиотек С++ (хотя, честно говоря, к этому зверю я еще не пристрелялся).

whoknows пишет:

Насчёт скорости - сам не проверял

А я проверял С++ с С#. Копал глубоко)) Уж больно интересно было. Ну, в общем случае С# на проценты (т.е. не в разы) медленнее работает. Зато скорость разработки растет именно в разы. Если не на порядок...

Еще интереснее было проверять стандартную библиотеку С++. например, read write vs. streams, mmap vs. streams и т.д.)

Я так же проверял и C#, но тут быстро пришел к выводу, что в .NET все хорошо оптимизировано и без меня, а значит я могу просто создавать... smile

З.Ы. Но на самом деле, конечно, я верю в силу JIT и то, что за системами вроде .NET будущее. Хотя, уже и настоящее.
З.Ы.Ы. А вот С - это свой себе язык, в себе замкнутый, а не язык языков, как С++.

Редактировался Tiphon (27-07-10 13:44:44)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#37 27-07-10 15:11:48

whoknows
Гость

Re: Linuxway

Tiphon пишет:

которые С-шники впитывают с молоком - располагайте  вместе используемые переменные рядом

Ничё что в C (до С99) все переменные в начале функции должны были об'являться?

Tiphon пишет:

мне, например,  рассказывали наши Иксперты по С, что под С++, (если его использовать, как С, с конструкторами, деструкторами и удобными мелочами), с этим все становится несколько сложнее.

Под румку вотки? Ну может быть. Только сначала нужно абстрагироваться от страниц памяти, написать рабочий прототип, а потом ковырять его, пока не заработает как надо.

Tiphon пишет:

У них всех один большой минус - кто как хочет, так и дрочит. Хорошо если нашел что-то, что отлично вписывается в твой дизайн, но скорее это будет требовать некой переработки или обертки. Ну и т.д.

Главная проблема C++ (вторая - совместимость с C, точнее, её наличие)

Tiphon пишет:

К тому, что в больших проектах тебе надо управлять ресурсами. Разными. И менеджеры ресурсов нужны разные. Так или иначе нужно, например, управление и оптимизация памяти. Ну и т.д.

Так стойте! Но ведь все это уже придумано и сделано в .NET (и жабе). Причем нормально

Можно пару примеров ресурсов? Про память более или менее понятно - GC vs local/new/delete - это особый холивар. Я про другие ресурсы.

Tiphon пишет:

Без разбора в уме аццких вложенных шаблонов.

Гыгыгы, мой код (вспомогательный шаблон):

    /**
     * Implementation of
     * while ((m_low>>1) < (m_high>>1) && sh_post > 0) {
     *     --sh_post;
     *     m_high >>= 1;
     *     m_low >>= 1;
     * }
     */
    template<unsigned long long m_low, unsigned long long m_high, int sh_post> class __UIntDivReductor
    {
    template<unsigned long long, unsigned long long, int> friend class __UIntDivReductor;
    template<unsigned> friend class __UIntDiv;
        static const unsigned long long m_low_result = ((m_low>>1) < (m_high>>1) && sh_post > 0) ?
                                                            __UIntDivReductor<(m_low>>1), (m_high>>1), sh_post-1>::m_low_result :
                                                            m_low;
        static const unsigned long long m_high_result = ((m_low>>1) < (m_high>>1) && sh_post > 0) ?
                                                            __UIntDivReductor<(m_low>>1), (m_high>>1), sh_post-1>::m_high_result :
                                                            m_high;
        static const unsigned long long sh_post_result = ((m_low>>1) < (m_high>>1) && sh_post > 0) ?
                                                            __UIntDivReductor<(m_low>>1), (m_high>>1), sh_post-1>::sh_post_result :
                                                            sh_post;
    };


Tiphon пишет:

Ну, в общем случае С# на проценты (т.е. не в разы) медленнее работает. Зато скорость разработки растет именно в разы. Если не на порядок...

Это если не работать с динамическими об'ектами. Если много new встречается, то всё по-другому идёт. Нагрузка на GC - очень накладная. Лично (на жабе) увеличивал скорость в разы с щ реюза временных об'ектов и отказа от new где не надо. Некрасиво, но у меня красивый интерфейс жопой наружу выставлен - чего щ надо пользователю. А в своём коде я как-нибудь разберусь. Бенчмарки - это очень сложный и неоднозначный процесс.

Tiphon пишет:

Еще интереснее было проверять стандартную библиотеку С++. например, read write vs. streams, mmap vs. streams и т.д.)

Она там довольно странно сделана. Самое главное, что мне там не нравится. Но, сцуко, мегагибкая.

Tiphon пишет:

З.Ы. Но на самом деле, конечно, я верю в силу JIT и то, что за системами вроде .NET будущее. Хотя, уже и настоящее.

Я тоже не чураюсь Java, но пока что всё это работает на деле хуже чем нормальные программы.

Tiphon пишет:

З.Ы.Ы. А вот С - это свой себе язык, в себе замкнутый, а не язык языков, как С++.

и каждый дрочит обязательно как он хочет. Видел кастомные реализации хэш-таблиц, которые реюзнуть невозможно, и которые использовались ровно в одном месте программы. Не моё smile

Редактировался whoknows (27-07-10 15:13:07)

#38 27-07-10 15:30:04

whoknows
Гость

Re: Linuxway

Mike22 пишет:

что фактически рушит идеи ООП.

Если пользователь (ПО или либы) этого не видит, то, имхо, это приемлемое решение. Красота глаз человека видна, когда они в глазницах. А если просто глаза на стол выложить - кто-то и блеванёт. smile

Редактировался whoknows (27-07-10 15:30:30)

#39 27-07-10 19:31:11

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Linuxway

whoknows пишет:

Ничё что в C (до С99) все переменные в начале функции должны были об'являться?

Глобальные?
Но если про функции, то там важен порядок переменных в объявлении функции, например.
Порядок переменных внутри функции тоже влиял на возможность попадания переменных в регистры.

whoknows пишет:

Это если не работать с динамическими об'ектами. Если много new встречается, то всё по-другому идёт. Нагрузка на GC - очень накладная. Лично (на жабе) увеличивал скорость в разы с щ реюза временных об'ектов и отказа от new где не надо. Некрасиво, но у меня красивый интерфейс жопой наружу выставлен - чего щ надо пользователю. А в своём коде я как-нибудь разберусь. Бенчмарки - это очень сложный и неоднозначный процесс.

В C# new по-другому работает.
Вот хорошие статьи, если интересно будет.
https://msdn.microsoft.com/en-us/magazine/bb985011.aspx
Поэтому операции new там являются быстрыми.

Бенчмарки это действительно очень сложный и неоднозначный процесс. Я когда делал старался делать С++ вей на С++ и С# вей на нет. Тобишь делал, чтобы и там и сям работа выполнялась быстрее всего и сравнивал) 

Еще, все мы знаем, что иногда "ощущение", что программа быстро работает важнее реальной быстроты ее работы))

На джаве я что-то не видел крупных приложений, которые бы работали без подтормаживаний, к сожалению. На .NET такие приложения есть. Paint.Net, например.

Редактировался Tiphon (27-07-10 19:39:48)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#40 27-07-10 20:15:36

whoknows
Гость

Re: Linuxway

Tiphon пишет:

Глобальные?

Нет, локальные переменные в функции. Декларация всех в самом начале функции. "Сама в шоке" smile

Tiphon пишет:

В C# new по-другому работает.
Вот хорошие статьи, если интересно будет.
https://msdn.microsoft.com/en-us/magazine/bb985011.aspx
Поэтому операции new там являются быстрыми.

В жаве несколько GC. Я говорю про генерационный GC, где стоимость new константная, а стоимость сборки мусора в новом поколении невысока. Как раз то, что там и написано про дотнет.

Tiphon пишет:

Еще, все мы знаем, что иногда "ощущение", что программа быстро работает важнее реальной быстроты ее работы))

Вот тут жаба и дотнет пока сосут по сравнению с традиционными программами. Может, потому что бездари создают, не знаю. Но тормоза заметны.

Tiphon пишет:

На .NET такие приложения есть. Paint.Net, например.

А на жабе Эклипс. Он потяжелее будет чем пэйнт. Но работает без тормозов, когда всё что надо проинициализирует. В пэйнт проблемы такой нет, потому сразу быстро работает.

Редактировался whoknows (27-07-10 20:16:10)

#41 27-07-10 22:50:31

whoknows
Гость

Re: Linuxway

wr224 пишет:

ты в курсе что на жабе и дотнете софт разрабатывается отнюдь не для рядовых пользователей в основном?

Знаю.

wr224 пишет:

whoknows wrote:

    Но работает без тормозов, когда всё что надо проинициализирует.

Да конечно! Особенно с плагинами, а без них его даже студийцем страшно показать  big_smile

Пользую без плагинов (кроме CDT, JDT, CVS, CVN, JUnit). Студией пользуйся сам. Мне она нахрен не сдалась.
А насчёт тормозов с плагинами - не ставь всё подряд и будет тебе шчасьце.

Редактировался whoknows (27-07-10 22:52:10)

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика