* About
  Здесь описан технический план по созданию программы frolov на языке C++.


* TODO Технический план по созданию программы frolov на языке C++ [2/6]
 - [X] базовые типы
   - [X] переменные
   - [X] ячейки
   - [X] сетки
 - [X] задание базового поля
   - [X] монотонного
   - [X] скачка
 - [-] метод Лакса-Фридрихса 1го порядка
   - [-] расчёт шага по времени
     - [X] заглушка
     - [ ] честно 
   - [X] шаг
   - [X] маршевая функция
 - [-] пройденные тесты
   - [X] монотонный тест
   - [X] тест на скачке по документации Власенко
     - [X] test-1
     - [X] test-2a
     - [X] test-2b
   - [ ] тест Фролова
 - [ ] метод Лакса-Фридрихса 2го порядка
 - [ ] стянуть со старых проектов скрипты отрисовки


* Developement Log
** 2014-09-11
   Избавился от ofstream в пользу stdio.h
   Добавил в Makefile действие rebuild
   Выставил флаг оптимизации -O2 (Как быстро стало работать!).
   Переписал march через цикл, потому что так и не смог добиться хвостовой рекурсии.
   Не забыть!!!
   Неправильная температура!!!
   Потоки - нет там никакой 1/2 - и вообще проверить метод!
** 2014-09-10
   Сегодня я развернул на своём сервере web-интерфейс для просмотра изменений
   git-репозитория. Он называется GitList, и меня в принципе устраивает.
** 2014-09-04
   Добил тесты Власенко для скачков без источниковых членов. К сожалению, я ловлю segfault
   где-то в районе 22760 шага. Я посмотрел backtrace в gdb и мне кажется, что стоит
   отказаться от использования ofstream - что-то там мудрёное происходит в недрах
   libstdc++.
** 2014-09-03 
   Завтра собираюсь посетить ЦАГИ и обустроить рабочее место. Вышеобозначенные изменения в
   программе должны быть доведены до конца первой рабочей недели, чтобы в понедельник у
   меня уже были первые расчёты тестов, которые можно было бы сравнивать с программой
   Власенко.
   Поработав, подготовил несколько тестов. До чего же быстро ведётся разработка на Си. Во
   многом я, конечно, обязан грамотной проработке структуры программы, сделанной в рамках
   разработки программы на Haskell, но всё равно, скорость разработки на этом языке у
   меня значительно выше.
   Возможно, я даже завтра что-нибудь сравню?
** 2014-08-05
   Сегодня обнаружил, что перегрузка оператора overator= - отвратительная
   задачка. Отказался от использования этой фичи.



* Общие соображения
** TODO Переписать всё в 5й раз!
  Возможно, зря я делаю всё это на C++. Я его выбрал исключительно из-за возможности
  перегрузки операторов, потому что слишком дорожил этим в Haskell. Но с другой стороны,
  перегрузка операторов - это нарушения базовой типизации, которой язык C и так грешит,
  конечно, но в определённом контексте это превратит мою работу в ад, когда проект
  разрастётся.

  Я думаю, что надо переписать либо на C, либо на CL.

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

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

  Мысль вторая говорит вот что: у меня времени - кот наплакал. А переписывание займёт его
  и так, и сяк. Так что можен ну его нафиг - оставлю всё как есть. Буду делать не
  правильно, а на результат.

  ----------

  Если я взаправду возьмусь за эту работу, то надо учесть, что все примеры grid-init
  принимают объект по ссылке - это поддерживается только в стандарте C++, но никак не в C.