Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, впрочему, Фуль, или Пфуль (не помню), был скорее примером в мою пользу, чем в вашу :p ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2014, 16:59 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Саш. Ох как-же я люблю цитировать сам себя... Ну что мне снова найти фразу где я говорю об исключительности функции strcpy и ассемблере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2014, 19:22 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
maytonСаш. Ох как-же я люблю цитировать сам себя... Ну что мне снова найти фразу где я говорю об исключительности функции strcpy и ассемблере? Марк, как давно появилась эта операция в ассемблере ?Примерно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:28 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Смотря в каком ассемблере. В true-RISC - нет и не должно быть. Про Z80 - не в курсе, в x86 - изначально было rep movs и два специальных регистра для поддержки. Даже три, если считать регистр цикла. Хотя сильно оптимизированная версия будет использовать load/double shift/store в общем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:33 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
До моего рождения. Речь идёт скорее всего об одной из первых версий С для разработки Unix. C 1973 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:46 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Это к тому, что я не уверен в том, что именно этот пример представлен в книге из-за связи с какими-то расширенными командами процессора (причём RISC процессоры отпадают(как я предполагал, а выше подтвердили)). Пример приведен не отталкиваясь от того, как будет работать отладчик. Он приведен с упором на возможности и преимущества языка. В любом случае, я не занимаюсь демагогией, и я вас прекрасно понимаю, если отладчик работает так как он работает, то такой код может добавить проблем при отладке. Полностью согласен. Но вот у меня такой вопрос. Как вы считаете, в данном конкретном случае: 1. Программист должен ограничивать себя, из-за несовершенства отладчика ? 2. Правильно ли, что программист должен ограничивать себя из-за несовершенства отладчика ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:47 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryпричём RISC процессоры отпадают(как я предполагал, а выше подтвердили)Отпадают не RISC, а true-RISC. Скажем, у вполне RISC-овых IBM Power, насколько я знаю, команда пересылки невыровненной цепочки байт - есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 15:58 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Программист должен ограничивать себя, из-за несовершенства отладчика ? 2. Правильно ли, что программист должен ограничивать себя из-за несовершенства отладчика ?программист должен ограничивать себя, чтобы писать понятный, легкочитаемый и сопровождаемый код. Совершенство/несовершенство отладчика в данном случае - вопрос 800ой очерёдности. Недавно топик был про v[ i++ ] = i++; - явление такого же порядка. Слишком много побочных эффектов для одной строчки кода, что потенциально может привести к появлению трудноуловимых ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 16:03 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Программист должен ограничивать себя, из-за несовершенства отладчика ? Тут речь идёт о другом. Скорее всего ты ограничиваешь своих коллег. Ты заставляешь их делать code-review следующей какашки. Код: plaintext 1. Если ты реализуешь "некоторую логику" то должно следовать ЯСНОЕ и ЧЁТКОЕ доказательство ее корректности в ОБЩЕМ СЛУЧАЕ. Тоесть функция не должна вызывать ни у кого вопросов или неоднозначных толкований. Цикл ВСЕГДА содержит выражения инициализации, итерационное выражение и тело цикла. 3 сущности. Они должны быть чётко обозначены. В строгих ЯП типа Pascal специально созданы жёсткие синтаксические конструкты. Декларации. Выражения инкремента. Тело цикла. Там нет возможности сделат финт или написать что-то неоднозначное. И не надо говорить про несовершенство отладчика. Он - простой и ясный инстумент для хождения по СТРОКАМ исходника. И если ты намисал ВСЁ приложение в 1 строчку то ты сам себе злобный буратино! Не пиши так! Не ходите дети... в Африку гулять. Выражение Код: plaintext 1. написано профессионалами. Они его миллион раз оттестировали. Они соптимировали код для коротких ассемблерных реализаций. Они не нуждались в дебаггере потому-что здесь дебаггер уже никогда не будет нужен. Эта функция - атом. В отличие от твоего кода. Который будет еще over 9000 раз исправлен. Дополнен условиями и кейсами. Вобщем ты можешь писать как угодно. Но как только ты выносишь код на суд, в форум. В паблик SVN. Просишь критиковать. Обсуждать. То тут уж - извини. Я оттянусь по полной. . Кстати я всегда прислушиваюсь к чужим советам и по поводу своего кода. Бывает что и глаз замылен. И лень-паттерн... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 16:15 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
maytonИ лень-паттерн... нашевсё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 16:21 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
maytonЯ оттянусь по полной. . всегда рад :) maytonКстати я всегда прислушиваюсь к чужим советам и по поводу своего кода. Бывает что и глаз замылен. И лень-паттерн... прислушиваюсь всегда к чужим советам. Basil A. Sidorov,egorych, mayton, всем спасибо за критику и предложения:)Все мнения учтены, и все они у меня в голове. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 16:21 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Саша дуй сюда Физики есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2014, 18:27 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Праздникам конец. Не помню говорил ли, но реализация алгоритма М (выполнение макрозамен в коде программы) завершена, ещё в прошлом году. Однако, мне не нравится моя реализация. Потому занимаюсь изменением алгоритма.(кстати, а есть ли для этого словосочетания слово аналогичное слову "рефакторинг" ? ). Да, собственно потому, то что сделал не выложил. Потому что не доволен этим. Первый шаг алгоритма M0 предлагаю сделать таким: считать весь код программы в heap. Адрес объекта например char* code. В дальнейшем алгоритм будет работать только с этим объектом. В настоящее время, токенизация происходит из файла. Причины такого решения: 1. Как можно быстрее освободить файл, вследствие чего предотвратить возможные ошибки. Например, во время работы с файлом с ним что-то произойдёт и он будет прочитан не полностью. Если время в течении которого мы с ним работаем больше, то вероятность того что это случится выше. 2. Предполагаю, что за счёт этого я не потеряю в производительности больше чем незначительно, даже в том случае если причина1 неверна. При возможных небольших потерях в производительности, выигрываю в простоте кода. Минусы: 1. Выделение памяти, хотя незначительное. Допустим код программы содержит 10^6 символов<2^(3.4*6) Байт<2^21 Байт=2 Мб Не так много, но на старых машинах прилично. 2. Возможные издержки во времени Возникающие проблемы: Как мне узнать сколько памяти в куче выделить на конкретный файл? Нужно выделить столько, сколько нужно + небольшой задел, мало-ли, ошиблись. Искать конец файла, или считать количество символов не считаю правильным, ибо долго. Должна где-то храниться информация о размере файла, и её вероятно как-то можно прочитать. Верно ? Подскажите пожалуйста, имеют ли место быть рассуждения выше ? Делали ли бы вы шаг М0 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 03:47 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Как можно быстрее освободить файл, вследствие чего предотвратить возможные ошибки. Например, во время работы с файлом с ним что-то произойдёт и он будет прочитан не полностью. Если время в течении которого мы с ним работаем больше, то вероятность того что это случится выше. Зачем??? Не шмогли значит не шмогли. Выдал ошибку что мол файл неожиданно закончился, или заблокирован, или что там еще с ним случилось и отменил всё. Какой смысл предотвращать ошибку файлового типа на этапе компиляции? И если ты ее даже предотвратишь: была версия файла номер N. Ты начал с ней работать, а в это время пришел злодей-юзер, подправил файл и стала там версия N+1. А у тебя в это время продолжается компиляция версии N. Откомпилировали, запустили - видим что программа работает не правильно. Но мы же знаем что мы эту ошибку только что исправляли?! SashaMercuryКак мне узнать сколько памяти в куче выделить на конкретный файл? Нужно выделить столько, сколько нужно + небольшой задел, мало-ли, ошиблись. Искать конец файла, или считать количество символов не считаю правильным, ибо долго. Должна где-то храниться информация о размере файла, и её вероятно как-то можно прочитать. Верно ?Верно. Хранится она в FS (File System) и доступна когда ты читаешь директорию, или через stat()/fstat() функции, или через пару fseek()+ftell() которые выполняются очень даже быстро (потому что внутри используют fstat()). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 07:04 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
White Owl, спасибо. Вы считаете, что не стоит менять текущий алгоритм в контексте токенизации из файла ? Вы бы не стали использовать предварительное чтение данных в кучу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 08:48 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПервый шаг алгоритма M0 предлагаю сделать таким: считать весь код программы в heap. Адрес объекта например char* code. В дальнейшем алгоритм будет работать только с этим объектом. В настоящее время, токенизация происходит из файла. Причины такого решения: 1. Как можно быстрее освободить файл, вследствие чего предотвратить возможные ошибки. Например, во время работы с файлом с ним что-то произойдёт и он будет прочитан не полностью. Если время в течении которого мы с ним работаем больше, то вероятность того что это случится выше. 2. Предполагаю, что за счёт этого я не потеряю в производительности больше чем незначительно, даже в том случае если причина1 неверна. При возможных небольших потерях в производительности, выигрываю в простоте кода. Если у тебя файл с исходником могут (внезапно) украсть инопланетяне то в топку твою файловую безопасность. Если твои файлы лежат на сетевом диске NFS/SMB/ftp/webdav то копируй их себе в каталог проекта или хоть в $TEMP/$TMP и наслаждайся эксклюзивом. Если твой компиллятор просто так по приколу всё прогружает в хип то рано или поздно разгневанный анонимос придёт к тебе в блог и выскажет своё мнение по поводу тебя и твоей драгоценной мамы (дай бох ей здоровья). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 12:43 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
mayton, :D спасибо, и вашей маме здоровья. Эту идею никто не поддержал. Хорошо. Приму вашу точку зрения, оставлю всё как есть, по вопросу токенизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 14:21 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Не поддерживают, потому что не надо подстраивать алгоритм под невероятные сценарии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 15:23 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Посмотрите http://opencxx.sourceforge.net/ OpenC++ is C++ frontend library (lexer+parser+DOM/MOP) and source-to-source translator ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 21:22 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Владимир2012, зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 01:40 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Я решил, что сначала мне нужно получить список всех замен (как бы это слово правильно назвать, макроподстановок? ) в тексте Приведенная ссылка - это тот проект с чего началась PVS-Studio /согласно их мемуаров/. Если вас интересует тема лексического разбора C++ ..., то этот проект по идее должен был бы быть вам интересен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 20:58 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, пользуюсь вашим советом. В свете недавних решений касаемо алгоритма, в первую очередь нужно реализовать алгоритмы через объект Stream. Изменил то, что вы предлагали. Подскажите пожалуйста, имею ли я право создавать такую структуру вообще, и подходит ли она мне в дальнейшем в таком виде ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 10:14 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
Владимир2012, мне нравится делать это самому. Не так много знаю, чтобы пользоваться готовыми решениями. Позже обязательно посмотрю. Спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 10:16 |
|
||
|
Анализ исходного кода. Разбор IOCCC 1985 august
|
|||
|---|---|---|---|
|
#18+
SashaMercuryимею ли я право создавать такую структуру вообще, и подходит ли она мне в дальнейшем в таком виде ? Имеете. Подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 10:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38853729&tid=2019118]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 167ms |

| 0 / 0 |
