faq: why c++ v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Fri, 30 Nov 2018 17:53:43 +0100
branchv_0
changeset 163 580c0e195817
parent 162 f9185bc14b68
child 164 56eb59640688
faq: why c++
relpipe-data/faq.xml
--- a/relpipe-data/faq.xml	Fri Nov 30 17:22:12 2018 +0100
+++ b/relpipe-data/faq.xml	Fri Nov 30 17:53:43 2018 +0100
@@ -62,6 +62,26 @@
 		</p>
 		-->
 		
+		<p>
+			<strong>Why C++?</strong>		
+			<br/>
+			Firstly, <m:name/> are a specification of a data format and as such are not bound to any programming language.
+			This specification is totally language- and plafform- independent.
+		</p>
+		<p>
+			The ideal/perfect language does not exist and our implementations will be written in various languages.
+			We started our prototype and first real implementations in C++ from several reasons:
+		</p>
+		<ul>
+			<li>It is mature and widespread: GCC runs almost everywhere and other compilers/toolchains are also available.</li>
+			<li>Programs written in C++ starts immediately: very important for CLI tools.</li>
+			<li>Can be seamlessly mixed with C and its libraries. Is good for interaction with the operating system.</li>
+			<li>Modern C++ is a quite good language.</li>
+			<li>We are not C++ gurus and C++ is not our first-choice language i.e. the fact that we are able to do implementation in C++ proves that the specification is simple enough to be reasonably implemented by an average software engineer in any other language :-)</li>
+		</ul>
+		
+		<p>Implementation in other languages will follow. Java is the next one. Then probably Perl, Python, Rust, Go, PHP etc. (depends on community involvement).</p>
+		
 		<p>			
 			<strong>Have you seen <a href="https://xkcd.com/927/">XKCD 927</a>?</strong>		
 			<br/>
@@ -74,6 +94,7 @@
 			Go @#$%&amp; yourself. We are pretty old school hackers and we enjoy our green screen terminals!<br/>
 			Of course, you can use <m:name/> anywhere if it makes sense for you.
 			<m:name/> are designed to be generic enough – i.e. not specific to any industry (banking, telecommunications, embedded etc.) nor platform.
+			Data in this format are very concise, so can be used even in very small devices.
 			Its native data structure is a relation (table) but it can also handle tree-structured data (i.e. any data).
 			It is designed rather for streaming than for storage (but under some circumstances it is also meaningful to use it for storage).
 		</p>