Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» прикладное программирование и не только оно...

Автор: pzaytsev
Дата сообщения: 01.09.2011 20:56
delover

Ничего страшного. "И это тоже пройдет" (с)
Автор: delover
Дата сообщения: 08.09.2011 19:07
Qraizer
Хотелось задать Вам вопрос, думаю Вы больше про это знаете. Есть неавтоматизированные участки работы всегда, но мне кажется со временем некоторые из них вызревают до того, чтоб их автоматизировали. Например уборка объявленных но не используемых переменных делается легко если мы читаем весь список замечаний к нашему коду. Это уже хорошо. Но бывает использование которое я думаю те системы про которые Вы рассказывали давно уже знают, однако компиляторы не учитывают. Простой пример:

Код: var
Log: TStream;
begin
Log:=TFileStream.Create;
//Log.Write;
Log.Free;
Автор: delover
Дата сообщения: 09.09.2011 04:33
Во ещё один говнокод откапал.

Код:
// Тут я убеждался что оно тип нормально вроде работает
EnterCriticalSection;
LeaveCriticalSection;
..
EnterCriticalSection;
// Собственно сам код
LeaveCriticalSection;
Автор: Qraizer
Дата сообщения: 10.09.2011 01:23
В общем случае тут нельзя ничего оптимизировать. Вызовы функций и возвраты из них не зря по Стандарту C и C++ создают точки следования, потому как функция может иметь непредсказуемые (без детального изучения её реализации) глобальные влияния на исполнительное окружение. Из неё могут вызываться другие функции с такими же непредсказуемыми глобальными эффектами, она может оперировать глобальными объектами, менять объекты ОС, файловой системы, сокеты итп. Реализация функции - чёрный ящик, так что без очень мотивированной нужды явно задавать её свойства какими-нибудь implementation defined аттрибутами, типа твоего ClassAttr, или там gccшых __attribute__, или MSных __declspec, очень не стоит, т.к. приоткрывает черноту ящика, связывает руки сопровождению, увеличивает роль человеческого фактора, в результате чего можно легко ненамеренно надурить компилятор, и тот не преминет не остаться в долгу, да и делает код непортабельным.
Другие языки построены по аналогичным принципам, так что C и C++ тут не одиноки. Просто в их Стандартах об этом сказано явно, а в детальности мануалов других языков я не уверен. В твоём случае само создание файлового потока с последующим его немедленным закрытием уже имеет побочными эффектам расширение структур ОС для поддержки нового объекта ядра, создание файла при его отсутствии, что является косвенной проверкой наличия у приложения (точнее у пользователя, от имени которого запущено приложение) прав создавать файлы в каталоге с логом, создание объектов синхронизации для файловой подсистемы многопоточной RTL, если они не были созданы ранее, расширение local thread storage под них для текущих и всех последующих ниток, итп. Ведь не исключено, что при невозможности создать файтовый поток будет брошено исключение. И оно перехватывается и обрабатывается не тут, а на пять уровней выше. Тут - всего лишь проверка. Мол, если управление вернулось, всё в порядке - закрываем поток и рабюотает дальше; иначе - исключение хватается вооон там, и программа красиво завершается с дружественным мессаджбоксом. Ты готов отказаться от всех этих побочных эффектов как "ненужных"? Если ответом будет "да", "наверно да" или "а какая разница, будут ли все эти побочные эффекты иметь место сейчас или чуть позже", то вот ещё пара примеров.
Есть такая замечательная функция: FlushInstructionCache(). Её смысл заключается в сбросе кеша инструкций, т.к. иногда самомодифицирующийся код может быть уже закеширован до своей модификации, и не все аппаратные архитектуры способны это должным образом обработать без подсказки. На много-процессорных/ядерных x86 не всё так просто, так что эта функция уходит в ядро и что-то там делает. Но на однопроцессорных функция просто возвращает управление назад, выставив eax в успех. Спрашивается, а за нафиг её тогда вызывать? Такие вопросы задавали для Win9x, которая в принципе была ичключительно однопроцессорной, и зачастую получали ответ, мол, та не нужна она там. И невдомёк было этим горе-гуру, что они глубоко неправы. И дело совсем не в кроссплатформенности и хорошем стиле. Сброс кеша даже на одном-единственном ядре всё-таки нужен. Дело же в том, что простых вызова/возврата для одного процессора/ядра всего-навсего достаточно для сброса кеша, это на многоядерниках с разделённым кешем всё несколько усложняется из-за отложенных на конвеере ядра записей ради более срочных спекулятивных чтений.
Есть ещё более замечательная функция InitCommonControls(). Судя по документации, её обязательно надо вызывать, если программа использует элементы управления из COMCTL32.DLL. Только вот косяк: она тоже пуста. Странно, но с ней-то что не так? Ладно FlushInstructionCache(), что-то там с железной архитектурой, но почему эту-то нужно вызывать обязательно? Очень просто. Она не просто функция из библиотеки, она - функция из динамической библиотеки. Без неё не будет импорта, без импорта не будет статической связи с DLL, без статической связи с DLL не отработает её инициализационный код, не будут созданы и зарегистрированны оконные классы элементов управления... Продолжать? Популярный нынче delay load добавит в этому своих копеек.
Мораль проста: работает - не трогай. Лучше не оптимизировать то, что не мешает, чем копаться в незадокументированных фичах.

А что там не так с критическими секциями? Что-то не догнал вопроса...
Автор: viort
Дата сообщения: 10.09.2011 10:52
подскажите люди, я учусь на 3 курсе радиотехнического факультета в новосибирском университете. работаю лаборантом на кафедре, сисадминю потихоньку, ну и если железо горит простреливаю и подпаиваю если возможно.. мне очень интересно научится программировать (базовые знания С++ и С# имеются), но я не знаю какой язык учить..
хотелось бы заниматься разработкой сайтов, возможно версткой в общем я сам точно не могу сказать, ибо полный нуб в этом) думал пойти на курсы ПХП, есть ли смысл? мб кто нибудь подскажет как поступить? сначало дума пойти на второе высшее на факультет прикладной математики и информатики, но времени совсем мало, какие нибудь курсы программирования меня бы устроили..
Автор: KChernov
Дата сообщения: 10.09.2011 12:57
viort

Цитата:
сначало дума пойти на второе высшее на факультет прикладной математики и информатики

Лучше конечно так и сделать.
При хорошей успеваемости вам должны пойти на встречу.
Но в принципе можно просто походить на интересующие лекции на факультет прикладной математики и информатики.
Ещё можно попробовать найти научного руководителя, который работает в интересующей вас области.
Автор: Molniev
Дата сообщения: 10.09.2011 14:19
viort
Лучшее образование - это самооборазование. Причем по книгам. Хотя это и долго.
Насчет какой лучше учить язык - лучше знать несколько. Но если у вас есть базовые знания C# и хочеться заниматься разработкой сайтов, то путем наименьшего сопротивления будет вероятно ASP.NET MVC Framework. http://www.asp.net/mvc - Слева панель Essential Vidios с неплохими видиуроками (на английском, но в принципе все можно понять и без его знания). Это кстати редкий случай, когда видиоуроки более-менее нормальные.
И будет здорово, если вы сначала почитаете спецификации HTML, CSS (я даже переводы видел) и хотя бы поверхностно познакомитесь с теорией релятиционных баз данных.

А насчет посещения лекций и курсов вузов. Не могу говорить за все, но многие из них существенно отстают от жизни и не дают необходимых знаний. Хотя у вас университет конечно весьма серьезный - возможно являеться приятным исключением.
К левым курсам я лично настрое ну вообще никак. Это из поговорки - кто не умеет работать, тот учит.
Автор: delover
Дата сообщения: 10.09.2011 15:52
Qraizer

Цитата:
Продолжать? Популярный нынче delay load добавит в этому своих копеек.
Мораль проста: работает - не трогай. Лучше не оптимизировать то, что не мешает, чем копаться в незадокументированных фичах.

А что там не так с критическими секциями? Что-то не догнал вопроса...

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

Цитата:
Ты готов отказаться от всех этих побочных эффектов как "ненужных"?

Нет не готов.

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

О кстати с днём Коллайдера.

Добавлено:
Фух сходил в душ пока никого нет. Мне кажется иногда можно заметить разницу между компилированием и десятком лет. Думаю Вы представляете приблизительно сколько языков программирования. А вот сколько движков - ещё больше. Могу быть неправ, но ось Windows 32 в основном - замечательные функции а не классы. Поэтому лучше изначально исходить из атрибутов для класса, Вы правильно поняли... ) Я говорил про классы которые могут содержать критические секции. А вот я тоже всегда забываю, что способов создать паузу в программе, будь то даже файл bat очень много.

... Так как знаю, но часто забываю, что очень часто непонятно выражаю мысль, которая очевидна мне, пример, извините допустим на Delphi.

Код: constructor ...Create(AOwner: TComponent);
begin
inherited Create(AOwner);
InitializeCriticalSection(FLock);
...
destructor ...Destroy;
begin
...
DeleteCriticalSection(FLock);
inherited Destroy;
Автор: rrromano
Дата сообщения: 14.09.2011 11:09

Цитата:
релятиционных баз данных.


Улыбнулся )
Автор: akaGM
Дата сообщения: 14.09.2011 14:08
не суди, да не судим будешь...
Автор: rrromano
Дата сообщения: 14.09.2011 14:57

Цитата:
не суди, да не судим будешь...


Да по-доброму, сам же не раз опечатывался )
Автор: akaGM
Дата сообщения: 14.09.2011 15:03
кто, я?
я не только опечатывался, я грамматически, идейно и политически ошибался... и не раз!
Автор: rrromano
Дата сообщения: 14.09.2011 17:53

Цитата:
кто, я?
я не только опечатывался, я грамматически, идейно и политически ошибался... и не раз!


Я имел в виду себя, конечно )))
Опыт без ошибок невозможен )))
Автор: XPerformer
Дата сообщения: 14.09.2011 18:50
rrromano

Цитата:
Опыт без ошибок невозможен )))

А как же "прямое знание"? интуиция?
Автор: rrromano
Дата сообщения: 15.09.2011 08:54

Цитата:
А как же "прямое знание"? интуиция?


Ага... Плавали, знаем )))
Пока шишек на набьёшь - профи не станешь )

А "прямое знание" и интуиция - это хорошо, но опираться на них - чистой воды экстремизм ). Особенно в команде на ключевом месте и в большой системе )
Автор: delover
Дата сообщения: 15.09.2011 16:47

Цитата:
Особенно в команде на ключевом месте и в большой системе )


Так или иначе, особенно в команде, люди опираются не только на свой опыт - полезно.
Автор: rrromano
Дата сообщения: 15.09.2011 17:17

Цитата:
Так или иначе, особенно в команде, люди опираются не только на свой опыт - полезно.


Согласен. Я всегда стараюсь держать некий баланс ).
Автор: delover
Дата сообщения: 16.09.2011 18:48

Цитата:
Согласен. Я всегда стараюсь держать некий баланс ).


В случаях одновременной скорби и дужевной радости недоступно.
Автор: delover
Дата сообщения: 16.09.2011 21:30
Другой поток мылси. Незаметил, ничего в новостях, но у программистов наступили законные выходные правда после праздника, который был в рабочие дни. Правительство Тау-Кентавра поздравляет программистов и выражает надежу что другие реальности всё же не будут перепрограммированными и кнопка ЕСЦ будет работать.
Автор: rrromano
Дата сообщения: 19.09.2011 10:46

Цитата:
и выражает надежу что другие реальности всё же не будут перепрограммированными и кнопка ЕСЦ будет работать


)))
Похоже, на этот раз всё обошлось )
Автор: delover
Дата сообщения: 20.09.2011 19:51

Цитата:
Опыт без ошибок невозможен )))

В продолжение - иногда пишут Дориан Грей а иногда Грэй, а опыт даже снижается.
Автор: delover
Дата сообщения: 21.09.2011 05:21
Надеюсь я не так сильно похож на человека который может всё упомнить. Иногда не корректно поправлять человека за ошибки. И чтож ву него в итоге выходит по опыту?

Добавлено:
История типо как в анегдоте про пожилого Батюшку который учит молодого - "я же сказал остограмится"... Как то заметил, что некоторые префиксы к модулям создают смешнозвучия. Так вот и с одним моим модулем, ну в шапке пишу значит что я Бил Гейтс в надежде, что когда нибудь прочитаю. Ну не так богаты мы на приколы. Ага, модуль в интернете болтается уже, вовремя прочитал... Ж) Так тут - смех и грех, а вот умел бы компилятор сообщение выдавать, типо - "не заправляй рясу в штаны"...
Автор: rrromano
Дата сообщения: 21.09.2011 09:42

Цитата:
Иногда не корректно поправлять человека за ошибки


А беззлобно улыбнуться можно? )
Автор: delover
Дата сообщения: 21.09.2011 16:36

Цитата:
А беззлобно улыбнуться можно? )



Конечно. Так я ж не только бываю неправ, я ж ещё и не сознаюсь. )
Автор: rrromano
Дата сообщения: 21.09.2011 17:04

Цитата:
Конечно. Так я ж не только бываю неправ, я ж ещё и не сознаюсь. )


Ага. Старая школа )))
Автор: delover
Дата сообщения: 07.10.2011 06:49
Вопрос: а сложно ли узнать приблизительно смысл BSD лицензии? В двух словах чем отличается и на какие закрепляемые права ставит акцент? Вопрос перенаправлен отсюда.

data man

Цитата:
Нет, не сложно. http://ru.wikipedia.org/wiki/Лицензия_BSD

Ничего из моего вопроса в статье Вики нет. Более того, - проБингил недавно вопрос, так же ничего не нашёл, может надо прогуглить? Повторю суть вопроса другими словами - мне не надо описания и истории документа, мне надо его перевод на русский, перевод сокращённый и осмысленный. (Типа - как утюгом пользоваться? - Иди читай техпаспорт, там есть адрес где можно попросить инструкцию). )))
Автор: murkovich
Дата сообщения: 07.10.2011 07:06
delover

Цитата:
Ничего из моего вопроса в статье Вики нет. ...


Может, это поможет? http://www.newmediarights.org/open_source/new_media_rights_open_source_licensing_guide
Автор: XPEHOMETP
Дата сообщения: 07.10.2011 07:22
delover

Цитата:
Вопрос: а сложно ли узнать приблизительно смысл BSD лицензии?

Ну, поскольку тут как бы флейм... А BSDM-лицензии, они бывают?
Автор: delover
Дата сообщения: 07.10.2011 09:34
XPEHOMETP
Думаю что бывают.

Если я правильно понимаю, под этой лицензией можно и продавать и раздавать.
Автор: tank0
Дата сообщения: 23.10.2011 20:29
delover
Yes, you can use BSD licensed code in your commercial application, but you should include their license description file.

Ru(PROMT)
Да, Вы можете использовать BSD лицензируемый кодекс в Вашем коммерческом применении, но Вы должны включать их файл описания лицензии.

Страницы: 12345678910111213141516171819202122232425262728293031

Предыдущая тема: Borland Developer Studio 2006 и Oracle пакеты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.