Все проще — давно пора уже делать такое IDE, которое хранит код не в виде текста, а сразу в виде синтаксического дерева. Все проблемы whitespace'ов исчезают автоматически :-)
Формально тоже всё верно. Но, пожалуй, это слишком мрачная картина. Так ли уж часто вам приходится исследовать историю файла на большую глубину? Обычно никто не заглядывает в историю глубже одной-двух ревизий файла. Замена табуляции на пробелы делается глобально и один раз и не должна мешать дальнейшим сравнениям.
Работаю в поддержке старого проекта. Пару раз приходилось заглядывать в код, написанный два года назад. После проведенного реформатирования табов на пробелы поиски нужного места отнимают львиную долю времени, скажу я вам. А если нужно получить полный diff… попробуйте сами, а потом уже проводите подобные рефакторинги.
Не всегда повышает, увы.
В частности, если ты не знаешь конкретно LambdaJ (хотя и используешь функциональный подход с использованием, допустим, Google Collections), то сходу прочитать, что будет делать тот или иной участок кода, довольно сложно.
Начнем с того, что сама философия языка C++ минималистическая.
Язык сам по себе не содержит даже средств для работы с вводом-выводом (хотя они есть в стандартной библиотеке). Поэтому не стоит удивляться, что работа с сокетами не входит в базовую комплектацию — это была изначальная задумка.
И правильно, что нету: посмотрел бы я на Вас, если бы Вы взялись программировать микроконтроллеры на C++, а он с собой до кучи тянул и сокеты, и GUI, и еще много всего полезного, но совершенно лишнего и даже вредного в условиях жестких ограничений.
P.S. Я лично программирую на Java, но раньше изучал и использовал C++, так что являюсь сторонником обоих языков.
Если Вы дополнительно к этому алгоритму прикрутите интерактивность, например, возможность выделить все линии пучка другим цветом ивозможность оставить только часть графа, то подобный софт будет очень и очень востребован :-) Респект!
Работаю в поддержке старого проекта. Пару раз приходилось заглядывать в код, написанный два года назад. После проведенного реформатирования табов на пробелы поиски нужного места отнимают львиную долю времени, скажу я вам. А если нужно получить полный diff… попробуйте сами, а потом уже проводите подобные рефакторинги.
В частности, если ты не знаешь конкретно LambdaJ (хотя и используешь функциональный подход с использованием, допустим, Google Collections), то сходу прочитать, что будет делать тот или иной участок кода, довольно сложно.
Язык сам по себе не содержит даже средств для работы с вводом-выводом (хотя они есть в стандартной библиотеке). Поэтому не стоит удивляться, что работа с сокетами не входит в базовую комплектацию — это была изначальная задумка.
И правильно, что нету: посмотрел бы я на Вас, если бы Вы взялись программировать микроконтроллеры на C++, а он с собой до кучи тянул и сокеты, и GUI, и еще много всего полезного, но совершенно лишнего и даже вредного в условиях жестких ограничений.
P.S. Я лично программирую на Java, но раньше изучал и использовал C++, так что являюсь сторонником обоих языков.
1) Использовать то, что полезно
2) Не повторять ошибок
Теперь появился стимул попробовать :-)