Reason - кроссплатформний C++ фреймворк

Почну з опису проблеми. При написанні програм на C++ деяку складність для розробників-початківців може представляти відсутність стандартних класів для роботи з рядками, файлами, збірками, мережею та виконання інших простих операцій. Звичайно, є WinAPI, Standard Library, CRT, MFC, ATL, але вони досить складні у використанні.


Наприклад, у серйозних комерційних проектах зчитувати файли за допомогою прямих викликів функції WinAPI CreceFile/ReadFile/CloseFile без створення класових обертань складно, і це неправильно. Інший приклад, робота з рядками, CRT - незручно: буфери, незахищений код. std::string - досить неповний: відсутні такі часто використовувані операції як наприклад trim, split. Тому багато розробників у кожному новому проекті пишуть власні класи/обгортки для виконання простих операцій.

Reason - крос-платформенна бібліотека С++ класів, що надає зручні засоби для роботи з багатьма потрібними практично в будь-якому проекті об'єктами:

  • Strings
  • Files/Folders
  • Smart Pointers
  • Collectons: Array, List, Map, HashTable, Tree, Set, Stack
  • XML/XPath
  • Regular Expressions
  • Threads
  • Events, Delegates
  • Sql

Згадав не всі, інші можливості можна побачити на сторінці розробника і подивившись у вихідний код. Всі класи зручно згруповані за просторами імен. Документація до бібліотеки відсутня, але класи бібліотеки добре спроектовані і мають дуже зручний інтерфейс, тому як мені здається проблем з її застосуванням виникнути не повинно. Безкоштовна для некомерційного використання (GNU GPL), для виконання в комерційних проектах потрібно отримати комерційну ліцензію.

Ну і мої особисті враження: сподобався як написаний код, мені близький підхід до програмування застосовуваний автором. Вже підглянув у нього цікавий шаблонний метод реалізації делегатів/подій, сам би довго думав мабуть.

Ще вразила думка автора Reason:

«When a lot of developers talk about why one language is better than another, they are really comparing frameworks. The language defines the syntax and the compiler, but it is the frameworks which make a language mainstream.»

COM_SPPAGEBUILDER_NO_ITEMS_FOUND