Re[2]: Тесты и с++
От: carpenter Голландия  
Дата: 29.08.07 14:06
Оценка: -3 :))
Здравствуйте, kaa.python, Вы писали:



KP>А потом поймает тебя человек, которому пришлось поддерживать ту х..ню что ты нах..чил, и как ты думаешь, что он с тобой будет делать? что-то мне подсказывает что не по головке гладить.


Ну если он меня поймает я думаю что он сам не будет знать что ему делать — я вешу 120 и не только сала
а по поводу вышесказанного — И Я О ТОМ ЖЕ-
если например нужно инкрементировать инт — то можно его просто ++ ...
а можно создать класс обертку , ессно лучше шаблонную ( етж круто )
переписать все мыслимые немыслимые конструкторы , операторы приведения типов ,
ессно определиться с операторами сравнения и присваивания , конструктор копий
, нельзя обойтись без обработки исключений в конструкторе , кданить пихнуть смарт поитеры (ессно лучше буст ),
деструктор ессно должен быть виртуальный ... и т.д и т.д.

ааааа ... главное — перегрузить постфиксный и преф ++
неплохо сделать частичную спец шаблона .....

а потом написат суперпуперобъект КУУЛ_ОБЖ(5);
КУУЛ_ОБЖ++;

и че проще поддерживать?
Весь мир — Кремль, а люди в нем — агенты
Re[5]: Тесты и с++
От: carpenter Голландия  
Дата: 29.08.07 14:22
Оценка:
Здравствуйте, carpenter, Вы писали:




C>но если касаеться никсов — то это либо классическая паралельная либо префоркнутая .

Тута я мальца погорячился — классическая паралельная на основе форка не канает
вот с предварительным создание потоков самое оно ... но опять же в зависимости от
количества клиентов размера передаваемых данных возможно имеет смысл и пул ..
Весь мир — Кремль, а люди в нем — агенты
Re[5]: Тесты и с++
От: Uzumaki Naruto Ниоткуда  
Дата: 29.08.07 14:46
Оценка: 1 (1) -1
трагично в общем...

Re[4]: Тесты и с++
От: Awaken Украина  
Дата: 29.08.07 15:29
Оценка:
S>Там именно мета-программирование. Если упрощенно, то несколько mpl::vector-ов (около 10), описывают класс.
S>По этим данным строится state-машина (возможно многоуровневая), генериуется таблица переходов, происходит подписка на event-ы
S>поддерживаются необходимые интерфейсы (генерится QueryInterface), проверяются различные зависимости, поддерживается

как интересноооо! хотел бы я на такой код посмотреть.
Re[3]: Тесты и с++
От: Awaken Украина  
Дата: 29.08.07 15:34
Оценка: :)
A>>(ну, если не требуют в точности написать сигнатуру конструктора копирования )
L_L>А какую из них ты пишешь?
того который виртуальный
Re[6]: Тесты и с++
От: carpenter Голландия  
Дата: 29.08.07 16:14
Оценка:
Здравствуйте, Uzumaki Naruto, Вы писали:

патамучто гладиолус

UN>трагично в общем...
Весь мир — Кремль, а люди в нем — агенты
Re[4]: Тесты и с++
От: WolfHound  
Дата: 29.08.07 17:22
Оценка: +1
Здравствуйте, Smal, Вы писали:

S>Там именно мета-программирование. Если упрощенно, то несколько mpl::vector-ов (около 10), описывают класс.

S>По этим данным строится state-машина (возможно многоуровневая), генериуется таблица переходов, происходит подписка на event-ы
Я бы написал внешний кодогенератор.
ИМХО былобы сильно проще написать и поддерживать да и проект компилировался бы сильно быстрее.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Тесты и с++
От: Uzumaki Naruto Ниоткуда  
Дата: 29.08.07 18:31
Оценка:
Потому что, описанные механизмы — потеря производительности и не эффективное использование CPU.

Re: Тесты и с++
От: Аноним  
Дата: 29.08.07 19:14
Оценка: 1 (1)
Здравствуйте, carpenter, Вы писали:

C>2.Кросплатформенность – опять тотже вопрос – неужели так много народу пишет на С++ кросплатформенные приложения , которые еще вдобавок должны компилиться любыми компиляторами под любые операционки и под любые архитектуры процессоров?


К кроссплатформенности, даже если она реально не нужна, все равно стоит стремиться.

Во-первых все может измениться и когда она вдруг потребуется,
может быть уже поздно. Как пример, см. тут
Автор: slavo
Дата: 27.08.07


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

Так же тебе придется избегать платформенно-зависимых хаков...

Но если для тебя это все пустые слова, то тебе и в самом деле лучше тупо махать молотком.
Re: Тесты и с++
От: frogkiller Россия  
Дата: 29.08.07 20:16
Оценка:
Здравствуйте, carpenter, Вы писали:

C>1.Неужели в реальном программинге так часто используються шаблоны?


У меня используются и довольно часто. Причем чаще всего не на уровне "хаков" a-la Александреску, а несколько более мирно. Очень часто шаблоны у меня получаются в результате рефакторинга, обычно исходный код сокращается где-то в половину, очень удобно.
Единственный раз, когда я немного переборщил с шаблонами, можно увидеть здесь.

C>2.Кросплатформенность – опять тотже вопрос – неужели так много народу пишет на С++ кросплатформенные приложения , которые еще вдобавок должны компилиться любыми компиляторами под любые операционки и под любые архитектуры процессоров?


Тут к сожалению у меня плохо. Пишу практически только под Win32, очень древние поделки под линукс — что называется "давно и неправда". Так что в этом вопросе я некомпетентен.

C>3.Алгоритмы — ( у меня лично есть небольшие недостатки по мат анализу алгоритмов , но да суть не в этом) . В вышеупомянутом посте функция подсчета

C>битов — она же подсчитывает (что еще надо?) ...

Обычно, да, если есть возможность использовать библиотечную функцию, надо её использовать. Но бывают ситуации, когда надо "такой же, но с перламутровыми пуговицами", а пуговиц таких в стандартных библиотеках нет. Редко, но бывают. И профессионализм разработчика чаще всего в такие моменты и выявляется.

C>4. По поводу ошибок в написании — я вообще с первого раза не пишу правильно

C>чтобы скомпилилось (я не имею в виду что нибудь типа а++; а так — 20-30 строк)( а Вы ?) . Сначала набрасываю основную идею , а потом под отладчиком дошлифовываю.

Обычно 20-30 строк у меня компилятся нормально с первого раза. Вот >100 строк, уже да, могут быть какие-то косяки. А вообще я сначала какое-то время думаю, прежде чем начинать кодить. Так что у меня сначала появляется довольно много практически готового кода, а потом идёт мелкая шлифовка и тестирование. Правда иногда бывает, что архитектура классов меня не устраивает, и я могу их все переписать заново практически с нуля. А вот так, чтоб по 20-30 строчек добавлять — это довольно редко.

C>Из реального — мне очень понравился такой метод тестирования —

C>дали проект , компилер и мсдн и попросили убрать при компиляции все ошибки и
C>варнинги и сказать свое мнение по части пары классов ( после тестирования меня брали но на предыдущей работе перебили цену).

Ну, не знаю. Лично мне такой метод не очень нравится, субъективно он значительно легче, чем когда надо самому с нуля код писать.

C>Из последнего собеседования — думаю большинство знает как выяснить —

C>являеться ли переменная степенью двойки (имееться в виду быстрый алгоритм
C>if(i & (i-1)) но если нет — реально ли до этого дотумкать в течении пары минут ?

Не знаю, этот факт уже давно лежит в подсознании. Думаю, за пару минут я бы его оттуда достал. Если только не заклинит на чём-нибудь.

C>п.с. и вооще ухожу под С# все равно еще стандарта через два они с С++ будут похожи ...


Удачи на новом поприще
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re: Тесты и с++
От: Аноним  
Дата: 29.08.07 20:25
Оценка:
C>2.Кросплатформенность – опять тотже вопрос – неужели так много народу пишет на С++ кросплатформенные приложения , которые еще вдобавок должны компилиться любыми компиляторами под любые операционки и под любые архитектуры процессоров?
C>Если пишу под вин msvc если под nix — gcc типы и размерность данных известны ... BCE.
C>Хотите кросплатформенности — пишите на жабе — в чем проблемы ?
C>Много ли кросплатформенных проектов пишуться на сях ?
Насчет виндов. Они ведь тоже есть разные. Win32, Win64, WinMobile...
Re[2]: Тесты и с++
От: Awaken Украина  
Дата: 29.08.07 20:35
Оценка:
А>Во-вторых это заставит разрабатывать лучшую архиректуру и в итоге получить лучший код.
А>Если ты разрабатываешь кросплатформенный код (ну или то, что будет легко портировать),
А>то ты как минимум должен явно выделить интерфейсы со внешним миром (гуй, файлы и пр...)

+1
даже если не прицеливаться на кроссплатформенность, получится просто хороший код,
с точки зрения структурированности, и удобства сопровождения
Re: Тесты и с++
От: Аноним  
Дата: 29.08.07 20:36
Оценка:
C>1.Неужели в реальном программинге так часто используються шаблоны?
C>Я имею гдето 5-6 законченных проектов от начала до конца и хренову кучу доработок и только раз использовал шаблоны , да и то от скуки.
C>Мне казалось что шаблоны нужны для использования в системных библиотеках а ля буст стл и т.д. .
C> Неужели так много народу пишет системные библиотеки ?
C>Я не утверждаю что это нужно не знать , но думаю что в большинстве случаев в шаблонах нет необходимости.
А у нас во многих проектах шаблоны есть. Ненавороченные, по сути небольшие хелперы. Но есть — мне они упрощают жизнь. Кстати раньше я их тоже не понимал и писал код без них нифига не понимая зачем нужны эти треугольные скобочки когда можно сделать ctrl+c/ctrl+p и усе будет ок...

C>3.Алгоритмы — ( у меня лично есть небольшие недостатки по мат анализу алгоритмов , но да суть не в этом) . В вышеупомянутом посте функция подсчета

C>битов — она же подсчитывает (что еще надо?) ...
C>И тут все полезли меряться пи...ками , типа можно так , а можно и так
C>, а типа если под такой проц так загнуть а под другой этак ( я думаю и теорию графов тут можно как нибудь прикрутить ).
C>Мне кажеться — если у тебя есть гвоздь и молоток и тебе надо забить гвоздь — берешь гвоздь
C>и х..шь по нему молотком пока не забьешь ... ВСЕ ... не надо плясать у молотка
C>полчаса и обклеивать его стразами для красоты ( поэтому иногда не люблю
C>когда критикуют типа индийский код ( индийцы в программинге как хохлы в строительстве быстро и недорого ( не очень красиво , но недорого) ))
C>... если надо оптимизировать — полчаса в гугле и готово ...
C>ну или в книге ... В ТОМ СЛУЧАЕ — ЕСЛИ НАДО.
C> Как часто вам приходиться оптимизировать алгоритмы для работы с битами
C>если вы пишете софт для обработки данных с какого нибудь мускуля ?
Если бы да кабы. Мы вот например — системшики-безопасники... И тут даже математика бывает нужна.

C>4. По поводу ошибок в написании — я вообще с первого раза не пишу правильно

C>чтобы скомпилилось (я не имею в виду что нибудь типа а++; а так — 20-30 строк)( а Вы ?) . Сначала набрасываю основную идею , а потом под отладчиком дошлифовываю.
C>Ебстественно я также пишу на бумаге на собеседовании . (ну это так — личное)
Ну ошибки можно разделить на несколько типов — опечатки, ошибки синтаксиса, и идейные ошибки. Например если человек забывл написать virtual в деструкторе базового класса это уже о чем то говорит...

C>Из реального — мне очень понравился такой метод тестирования —

C>дали проект , компилер и мсдн и попросили убрать при компиляции все ошибки и
C>варнинги и сказать свое мнение по части пары классов ( после тестирования меня брали но на предыдущей работе перебили цену).
нуну... Не сомневаюсь что понравился

C>п.с. и вооще ухожу под С# все равно еще стандарта через два они с С++ будут похожи ...

А кто держит? Скатертью дорожка. Чем меньше конкурентов на рынке труда тем лучше
Re: Тесты и с++
От: carpenter Голландия  
Дата: 30.08.07 04:47
Оценка:
Здравствуйте, carpenter, Вы писали:

Всем спасибо — все что надо -выяснил

Хочу внести только некоторые пояснения —

1. Я имел в виду не использование а написание собственных шаблонов ...
использование это само собой ...практически все библиотеки их юзают даже мфц ... и кудауж без вектора и стрингов

2 64 бита не учел ... но гуи ? эт так риторически ...

3. Самый больной моя мозоль —
Я просто имел в виду — что не вижу смысла в преждевременной оптимизации или излишнем усложнении кода
только ради того чтобы показать свои знания.
Из реального — на собеседовании
нужно было сделать обход вектора с выполнением к каждому члену какойто операции —
есть два варианта ... первый — через for и []
второй — то ли for_each то ли transform (не часто пользую поэтому не помню) ...
я говорю — что пользую for потому что это проще и наглядней и понятней человеку незнакомому с контейнером
мне — фи это моветон ... почему не объяснили ... только потому что показывает незнание как писать и использовать
предиктаты ( т.е. я то знаю но не вижу смысла) ?
Это то что я имел в виду.


п.с. и за что это вы так шарп не любите ?
потому что на нем можно делать то же самое что на цпп только с меньшими знаниями и затратами ?
ну только если небольшая потеря производительности ...
Весь мир — Кремль, а люди в нем — агенты
Re[8]: Тесты и с++
От: carpenter Голландия  
Дата: 30.08.07 04:47
Оценка:
Здравствуйте, Uzumaki Naruto, Вы писали:

UN>Потому что, описанные механизмы — потеря производительности и не эффективное использование CPU.


обоснуйте
Весь мир — Кремль, а люди в нем — агенты
Re[2]: Тесты и с++
От: dip_2000 Россия  
Дата: 30.08.07 05:09
Оценка: :)
C>Всем спасибо — все что надо -выяснил


C>есть два варианта ... первый — через for и []

C>второй — то ли for_each то ли transform (не часто пользую поэтому не помню) ...
C>я говорю — что пользую for потому что это проще и наглядней и понятней человеку незнакомому с контейнером
C>мне — фи это моветон ... почему не объяснили ... только потому что показывает незнание как писать и использовать
C>предиктаты ( т.е. я то знаю но не вижу смысла) ?
Почему, и в чем смысл давно и аргументированно написано у Скотта Майерса, в книге "Эффективное использование STL". У Вас есть чем опровергнуть то, что там утверждается ?

C>п.с. и за что это вы так шарп не любите ?

C>потому что на нем можно делать то же самое что на цпп только с меньшими знаниями и затратами ?
C>ну только если небольшая потеря производительности ...
Вот. Да же вы сами не написали ключевое слово все. На шарпе/яве нельзя делать всего, что можно на С/С++.
Еще есть ключевое слово везде. Под все ли платформы доступны фреймворки ?
А производительность — то же ключевое слово, тк в некоторых ситуациях именно она является узким местом

PS Боюсь опять все свалится во флейм
Re[2]: Тесты и с++
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.08.07 05:51
Оценка:
C>п.с. и за что это вы так шарп не любите ?
C>потому что на нем можно делать то же самое что на цпп только с меньшими знаниями и затратами ?
C>ну только если небольшая потеря производительности ...

да любим мы его, любим. только вот есть довольно потери в производительности (ну да это мелочи, при возрастающей скорости разработки на это можно закрыть глаза), и невозможно писать кросс-платформенные приложения (лично для меня это огромный минус, уровня "нет смысла знакомится с языком").
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Тесты и с++
От: Smal Россия  
Дата: 30.08.07 06:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Smal, Вы писали:


S>>Там именно мета-программирование. Если упрощенно, то несколько mpl::vector-ов (около 10), описывают класс.

S>>По этим данным строится state-машина (возможно многоуровневая), генериуется таблица переходов, происходит подписка на event-ы
WH>Я бы написал внешний кодогенератор.
WH>ИМХО былобы сильно проще написать и поддерживать да и проект компилировался бы сильно быстрее.
Вероятно. Но это дополнительный уровень косвенности. Его тоже надо отлаживать...
С уважением, Александр
Re[3]: Тесты и с++
От: carpenter Голландия  
Дата: 30.08.07 06:57
Оценка:
Здравствуйте, dip_2000, Вы писали:

C>>Всем спасибо — все что надо -выяснил

_>


_>Почему, и в чем смысл давно и аргументированно написано у Скотта Майерса, в книге "Эффективное использование STL". У Вас есть чем опровергнуть то, что там утверждается ?


Опровергать не буду ... но ... есть некоторые замечания —

эффективность — почему в примере он использует для проверки последнего элемента функцию end()
почему бы не объявить vector<blblabla>::interator end = vec.end();
или же как я — int size = vec.size();
for(int i =0;i<size;i++) // здесь конечно должен быть преaиксный инкремент но поскольку это простой тип я не иду на уступки красивости
чем этот вариант менее эффективен вызову предиктата , учитывая накладные расходы на вызов лишней функции ?
Я не оспариваю что для контейнеров не имеющих произвольного доступа вариант с алгоритмами имеет смысл , но писать везде
по обезьяньи не понимая зачем , а только потому что так надо ...

правильность — я не делаю ошибок

удобство сопровождения — с моим кодом позже будут работать люди , которые возможно и не слышали слова stl


_>Вот. Да же вы сами не написали ключевое слово все. На шарпе/яве нельзя делать всего, что можно на С/С++.

Так ли сильно это надо ? в конце концов критическую часть кода можно писать и на цпп
опять же есть unmanaged
_>Еще есть ключевое слово везде. Под все ли платформы доступны фреймворки ?
MONO ?
_>А производительность — то же ключевое слово, тк в некоторых ситуациях именно она является узким местом
см выше ...

_>PS Боюсь опять все свалится во флейм


may be ... may be
Весь мир — Кремль, а люди в нем — агенты
Re[4]: Тесты и с++
От: Lorenzo_LAMAS  
Дата: 30.08.07 06:58
Оценка:
A>того который виртуальный
ты, наверное, при этом еще мастерски ссылаешься на несуществующие пункты стандарта и они верят?
Of course, the code must be complete enough to compile and link.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.