Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Флудильня :)
(не знаешь где спросить? спрашивай здесь!)

Флудильня-говорильня, Флеймоварня-отвечальня

 
Флейм, флуд, holy wars, а также о программировании вообще :)
Допускаются любые обсуждения и высказывания на тему программирования и около.
Просьба не переходить на личности и не обсуждать политику и тд...
 

Решаемые задачи:
. . . .
       
. . . .
 
 


 

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

в качестве затравки...
 
прочитал небольшую заметку о разработке советского/российского космического ПО...
и офигел...
 
оказывается почти всё ПО разработано и продолжает разрабатываться на
внимание!
на Модуле-2!
включая новую ГЛОНАСС...
о как!
 
--akaGM :)


Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 15:08 05-11-2008 | Исправлено: akaGM, 02:23 18-09-2023
pzaytsev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
 
Ничего страшного. "И это тоже пройдет" (с)

Всего записей: 401 | Зарегистр. 22-08-2005 | Отправлено: 21:56 01-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer
Хотелось задать Вам вопрос, думаю Вы больше про это знаете. Есть неавтоматизированные участки работы всегда, но мне кажется со временем некоторые из них вызревают до того, чтоб их автоматизировали. Например уборка объявленных но не используемых переменных делается легко если мы читаем весь список замечаний к нашему коду. Это уже хорошо. Но бывает использование которое я думаю те системы про которые Вы рассказывали давно уже знают, однако компиляторы не учитывают. Простой пример:

Код:
var
   Log: TStream;
begin
  Log:=TFileStream.Create;
  //Log.Write;
  Log.Free;

Кто бы сомневался что именно объект типа TFileStream именно таким способом никогда не используется практически. А теоретически - это неправильное использование о котором может быть соответствующее сообщение. Если шагнуть немного дальше, то некоторые такие объекты могут быть просто оптимизированы, возможно они нужны нам в тексте но не нужны в рабочем коде. Собственно вопрос как это происходит у анализаторов и можно ли например писать так:

Код:
 
[ClassAttr WarnCondition=true; Optimized=AlwaysNowarn]
TMyMemoryStream=class(
?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:07 08-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Во ещё один говнокод откапал.

Код:
 
// Тут я убеждался что оно тип нормально вроде работает
EnterCriticalSection;
LeaveCriticalSection;
..
EnterCriticalSection;
// Собственно сам код
LeaveCriticalSection;

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

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 05:33 09-09-2011
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В общем случае тут нельзя ничего оптимизировать. Вызовы функций и возвраты из них не зря по Стандарту 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 добавит в этому своих копеек.
Мораль проста: работает - не трогай. Лучше не оптимизировать то, что не мешает, чем копаться в незадокументированных фичах.
 
А что там не так с критическими секциями? Что-то не догнал вопроса...

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 02:23 10-09-2011
viort

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите люди, я учусь на 3 курсе радиотехнического факультета в новосибирском университете. работаю лаборантом на кафедре, сисадминю потихоньку, ну и если железо горит простреливаю и подпаиваю если возможно.. мне очень интересно научится программировать (базовые знания С++ и С# имеются), но я не знаю какой язык учить..
хотелось бы заниматься разработкой сайтов, возможно версткой в общем я сам точно не могу сказать, ибо полный нуб в этом) думал пойти на курсы ПХП, есть ли смысл? мб кто нибудь подскажет как поступить? сначало дума пойти на второе высшее на факультет прикладной математики и информатики, но времени совсем мало, какие нибудь курсы программирования меня бы устроили..

Всего записей: 2 | Зарегистр. 06-09-2011 | Отправлено: 11:52 10-09-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
viort

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

Лучше конечно так и сделать.
При хорошей успеваемости вам должны пойти на встречу.
Но в принципе можно просто походить на интересующие лекции на факультет прикладной математики и информатики.
Ещё можно попробовать найти научного руководителя, который работает в интересующей вас области.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 13:57 10-09-2011
Molniev

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

Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 15:19 10-09-2011 | Исправлено: Molniev, 15:26 10-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;

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

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 16:52 10-09-2011 | Исправлено: delover, 13:46 12-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Улыбнулся )

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 12:09 14-09-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не суди, да не судим будешь...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 15:08 14-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Да по-доброму, сам же не раз опечатывался )

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 15:57 14-09-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто, я?
я не только опечатывался, я грамматически, идейно и политически ошибался... и не раз!

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 16:03 14-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Я имел в виду себя, конечно )))
Опыт без ошибок невозможен )))

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 18:53 14-09-2011
XPerformer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rrromano

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

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

Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 19:50 14-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
Ага... Плавали, знаем )))
Пока шишек на набьёшь - профи не станешь )
 
А "прямое знание" и интуиция - это хорошо, но опираться на них - чистой воды экстремизм ). Особенно в команде на ключевом месте и в большой системе )

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 09:54 15-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 17:47 15-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 18:17 15-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
В случаях одновременной скорби и дужевной радости недоступно.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:48 16-09-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Другой поток мылси. Незаметил, ничего в новостях, но у программистов наступили законные выходные правда после праздника, который был в рабочие дни. Правительство Тау-Кентавра поздравляет программистов и выражает надежу что другие реальности всё же не будут перепрограммированными и кнопка ЕСЦ будет работать.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 22:30 16-09-2011
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
)))
Похоже, на этот раз всё обошлось )

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 11:46 19-09-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru