Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение изменений в файле, пишу компилятор. Сохранение изменений 
:(
    Опции темы
integral
  Дата 19.1.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

Репутация: нет
Всего: нет



снач собстно пишу лабу - компилятор, пнятно простенький для простенького языка. И как во всех компиляторах, имеется текст-ареа для текста программы (реализовано через JTextArea). Пользователь указывает искходник, и текст их исходника переписуется сюда. После этого пользователь имеет возможность менять код и компилить. Так вот, сейчас компиляция идет из файла. Т.е. пользователь клацает "компиле", файл перезаписуется (ВЕСЬ, что кажется не есть гуд) и после этого идет считывание лексем с файла. Компилятор однопроходный.
Хочеться:
1. Оптимизировать как-то перезапись. Это возможно? Что возможно я знаю, и даже имею некоторые соображения... но какие-то они очень не оптимальные...
2. Хочется, что бы компилятор считывал символы из окна, а не файла. Если нада изменить текст-ареа на другой компонент - велкомsmile с удовольствием выслушаю предложения... Идея getText и считівать со стоки не приемлимаsmile Помнится, біл компонент, дающий образ или что-то такое содержания... вобщем. что бы всеь текст в память не загонять... Или все же лучше компилить путем сохранения изменений в файл, а потом считывать из файла... Кто что думает?
Спасибо за помощь!


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
JackYF
Дата 19.1.2008, 17:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



integral, честно говоря, ты сюда намешал проблемы реализации и ещё чего-то... я не понял сути вопроса.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
integral
Дата 20.1.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

Репутация: нет
Всего: нет



Цитата(JackYF @ 19.1.2008,  17:05)
integral, честно говоря, ты сюда намешал проблемы реализации и ещё чего-то... я не понял сути вопроса.

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


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
JackYF
Дата 20.1.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(integral @  20.1.2008,  10:38 Найти цитируемый пост)
без использования перезаписи полностью всего содержимого.  

Учитывая то, что даже если у тебя файл размером 1 метр, и пользователь добавит в начало 1 байт, тебе всё равно придётся так или иначе переписывать весь файл... ты ещё хочешь это реализовывать? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 20.1.2008, 12:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(integral @  20.1.2008,  11:38 Найти цитируемый пост)
Интересует алгоритм сохранения текстового файла, который частично изменен... без использования перезаписи полностью всего содержимого. 

мэппинг файлов тебе поможет
CreateFileMapping() - Windows
mmap() - Linux


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
maxim1000
Дата 20.1.2008, 13:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

P.S.

Цитата(integral @  19.1.2008,  16:08 Найти цитируемый пост)
Идея getText и считівать со стоки не приемлима

а почему, если не секрет?


--------------------
qqq
PM WWW   Вверх
Kangaroo
Дата 20.1.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: нет
Всего: 104



Цитата(integral @  19.1.2008,  15:08 Найти цитируемый пост)
Оптимизировать как-то перезапись. Это возможно?

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


Цитата(integral @  19.1.2008,  15:08 Найти цитируемый пост)
Идея getText и считівать со стоки не приемлима

Почему? Есть вариант в одном потоке запустить сохранение, а в другом - компиляцию.


--------------------
Lost....
PM MAIL MSN   Вверх
integral
Дата 20.1.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.7.2006
Где: Dnipropetrovs' ;k, Ukraine

Репутация: нет
Всего: нет



Цитата(maxim1000 @ 20.1.2008,  13:17)

Цитата(integral @  19.1.2008,  16:08 Найти цитируемый пост)
Идея getText и считівать со стоки не приемлима

а почему, если не секрет?

не секрет) Типа много памяти скушает, если файл эдак на метр
Воще наю, что файлы с кодом не такие большие, и на всю эту оптимизацию можна забидь, но такие пожелания преподаsmile


--------------------
import my.opinion.*;
жж
PM ICQ   Вверх
Mayk
Дата 20.1.2008, 17:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(integral @  20.1.2008,  21:34 Найти цитируемый пост)
Типа много памяти скушает, если файл эдак на метр

Метр это много  smile  smile ? Вообще-то, 21-ый век на дворе. Тыкай препода носом в "преждевременная оптимизация --- корень всех зол" из любой мало мальский уважающей себя книге по программингу.


Это сообщение отредактировал(а) Mayk - 20.1.2008, 17:57


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
JackYF
Дата 20.1.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(Mayk @  20.1.2008,  16:57 Найти цитируемый пост)
Тыкай препода носом в "преждевременная оптимизация --- корень всех зол" из любой мало мальский уважающей себя книге по программингу.

ППКС.
Хотя знаю по опыту, препод может тупо на всё это забить. Но попытаться стоит.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
maxim1000
Дата 20.1.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Mayk @  20.1.2008,  17:57 Найти цитируемый пост)
Метр это много  smile  smile ? Вообще-то, 21-ый век на дворе. Тыкай препода носом в "преждевременная оптимизация --- корень всех зол" из любой мало мальский уважающей себя книге по программингу.

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

Добавлено через 3 минуты и 21 секунду
во многих средах реализовано сохранение перед компиляцией, поэтому вполне естественно сохранить его в файл, а потом читать его оттуда
кроме того, раз уж компилятор однопроходный, анализ файла не должен приводить к необходимости хранения его целиком в памяти


--------------------
qqq
PM WWW   Вверх
JackYF
Дата 20.1.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(maxim1000 @  20.1.2008,  18:44 Найти цитируемый пост)
поэтому вполне естественно сохранить его в файл, а потом читать его оттуда
кроме того, раз уж компилятор однопроходный, анализ файла не должен приводить к необходимости хранения его целиком в памяти 

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


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Mayk
Дата 20.1.2008, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(maxim1000 @  20.1.2008,  23:44 Найти цитируемый пост)
нужно различать учебные и реальные задачи
в реальных задачах случаются ситуации, когда действительно нужно оптимизировать, и идея готовить к этому учеников (как и к навыкам выбора времени и места оптимизации) лично мне кажется вполне хорошей
для этого совсем необязательно (хотя и желательно) работать с огромными массивами данных

К этому — это к чему? К оптимизации без запуска профилировщика? ИМХО — Определенно Плохая Идея.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 21.1.2008, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Mayk @  20.1.2008,  20:59 Найти цитируемый пост)
К этому — это к чему? К оптимизации без запуска профилировщика?

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

Добавлено через 3 минуты и 25 секунд
ИМХО, здесь ситуация, как с изучением инстранного языка - человек должен уметь выражать свои мысли и понимать чужие
даже если на данный момент нет англоязычного человека рядом, два русскоязычных человека садятся рядом и начинают общаться, хотя, если подумать реально, значительно проще передать эту информацию на русском



--------------------
qqq
PM WWW   Вверх
Sardar
Дата 21.1.2008, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



Древний MS Word писал в свой .doc, изнутри больше похожий на файловую систему. Естественно в новых форматах от этого ушли, ресурсов больно много smile

Можно повторить путь гиганта, создать средний файл (растёт по мере надобности блоками), внутри разбить на небольшие блоки, связать в одно дерево (B+ tree). Дальше по задаче, можно при каждом сейве блок изменять (параллельное редактирование многими пользователями затруднительно), либо изобразить простенькую БД (даже с журналом можно smile ), что будет отдельным тредом изменения сбрасывать на диск (не деструктивное изменение, т.е. копируем блок, вносим изменения). Изменения в некотором буфере в памяти. При доле фантазии может выйти аналог SQLite smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.