Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Valery Solovey

Страницы: [1] 2 3 ... 34
1
Общий раздел / Re: Sublime Text 2
« : Декабрь 08, 2017, 04:07:29 pm »
а у саблайма нет плагинов для гита? В гугле что-то находится, но не понятно, насколько оно рабочее.

2
Общий раздел / Re: OberonJS
« : Февраль 22, 2017, 09:39:40 pm »
Можно заголовки у страницы настроить.
<meta http-equiv="Cache-Control" content="no-cache">

Или заголовки у http-ответа указать.
Это плохая идея, так как компилятор пол мегабайта весит :)
Во-первых, сервер сжимает передаваемые данные (или его можно настроить, чтобы он сжимал). Так что это после распаковки будет пол мегабайта.
Во-вторых, есть <frame> и <iframe>. Как я понимаю, с их помощью можно разбить страницу на несколько частей, которые будут иметь свои заголовки. Но это надо проверить. У меня был где-то пример. Если найду, то сообщу.

3
Общий раздел / Re: OberonJS
« : Февраль 18, 2017, 10:13:31 am »
Можно заголовки у страницы настроить.
<meta http-equiv="Cache-Control" content="no-cache">

Или заголовки у http-ответа указать.

4
Общий раздел / Re: OberonJS
« : Январь 23, 2017, 05:29:22 pm »
у меня работает
<html>
<head><script src="Log.js"></script></head>
<body onLoad="this.Log.String('yyy');">
<div id="log"></div>
</body>
</html>

5
Общий раздел / Re: OberonJS
« : Январь 05, 2017, 09:00:32 pm »
Транслятор разрабатывал vlad2.

6
из вики:
Цитировать
Максимально возможный размер файла для тома FAT32 — ~ 4 ГБ — 4 294 967 295 байт (в FAT32 под размер файла отведено 4 байта. 4 байта - это 32 бита. 232-1 — 4 294 967 295 байт. Поэтому размер файла не может быть больше этого значения, иначе не получится указать его длину. Хотя цепочку в FAT таблице можно продолжать и дальше, но тогда для определения размера файла придется каждый раз пробегать по всей цепочке, а это будет занимать много времени.
Таким образом, файл может быть большим, но, похоже, его не создать стандартными средствами.

7
Общий раздел / Кое-что о сущности ООП
« : Декабрь 12, 2016, 11:10:29 pm »
ООП, как и множество других мощных концепций в своей гениальной простоте возник не из ниоткуда, а образовался путём связи уже существовавших и использовавшихся в программировании вещей. И эти вещи были образованы не просто раньше ООП, но и в программирование с компьютерами уже попали после опробования на разных дисциплинах в течение тысяч лет.

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

У многих задач, с которыми сталкивается программист, есть несколько решений. А также, на программиста влияют физиологические, культурные и биографические (эффект утёнка) причины. И в итоге, программист отдаёт предпочтение одной из вещей, составляющих фундамент ООП, и рассматривает сам ООП через призму полюбившегося ему кирпичика. Я считаю, что именно эта деталь до сих пор заставляет обсуждать или даже спорить по поводу ООП.

Но опять же, я хотел рассмотреть не эти детали, а целиком ООП. При грубом рассмотрении в ООП можно выделить две сущности: объект и класс. Междну ними существует отношение первичности. А ещё существует две школы, одна из которых рассматривает в качестве первичной сущности класс, а вторая - объект. Представителем первой школы является Симула, а второй - Смолтолк. Ну, и многие другие ООП-языки тоже принадлежат одной из этих школ.

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

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

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

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

Также, есть качественная разница в реализации. Думаю, школа с первичным объектом при прочих равных проиграет в производительности школе с первичным классом.

8
Какие таблицы виртуальных функций? Тут же вообще нет нигде речи ни про наследование ни, следовательно, про ООП.
Не очень понял... Я руководствовался этим:
Цитировать
существует ли в ООП "Маски" которые при наложении на объект возвращают, только то, что соответствует маске
...
два класса несвязанные между собой базовыми наследованием, применяя к ним маску мы получаем доступ к одинаково именованным методам и свойствам, которые соответствуют маске.
Или виртуальные - это исключительно абстрактные? Ну, тогда я имел в виду таблицу с указателями на реализованные методы.

9
Эта маска - и есть интерфейс как концепция.

А если объектег не может то, что маска хочет? Что будет?
Будет то же самое, что и при приведении объекта к типу, которому он не соответствует. Поэтому, в пару к операции приведения нужна операция проверки типа.

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

10
Хм, на FAT32 все работает, даже XDS.
На FAT32 же нельзя делать файлы объёмом даже в 4 гигабайта ровно -- только меньше...
Это если размер кластера не менять. Но если его увеличить, то и размер файла может быть гораздо больше, чем 4 ГБ.

11
А как насчёт сделать показ не абсолютных значений, а относительных?
Самый быстрый вариант - это 100%, а все остальные больше (или меньше) этой величины.

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

И ещё: сильно ли различаются результаты тестов, проведённых над одними и теми же алгоритмами в разные дни? Есть ли смысл перезапускать уже проведённые тесты?

12
Не понятно... Почему неубывающая последовательность неправильна?

И почему равенство значений подменяется равенством хэшей?

13
Кстати, тоже интересен способ проверки решений.

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

14
>Как ни странно, получил хороший прирост (больше 30%) даже не моем дохлом нетбуке.

А как это узнать? Разве ещё остались машины с одним ядром?

А прирост производительности даже на одном ядре будет потому, что с диска в память копирование осуществляет не процессор, а DMA.

15
Это связано с архитектурой x86. Там для сдвигов влево и вправо используются разные команды. При этом, величина сдвига помещается в регистр cl (8 бит), но процессор учитывает только младшие 5 бит. Т. е. величина сдвига всегда в диапазоне 0..31. Не знаю как в ARM, но в реализации Astrobe тоже есть LSR.
Так это можно решить на этапе трансляции. При чтении второго параметра проверить его на знак и в зависимости от знака подставить правильную команду процессора. А в языке программирования будет только одна предопределённая процедура.
Другое дело, что Left Shift на -3 позиции заставляет мозг больше напрягаться...

Страницы: [1] 2 3 ... 34