It was always a big question in me that all schooling/engineering programming courses( C or assembly) teach Fibonacci series or some tough logic program ( something like for a given number 'N' search the subset bla bla .. ) . But when I looked at the computer , I wondered how they build these screens/commands and applications.. is it with Maths ? is it with Fibonacci series /prime numbers? (They are not, it made up of simple logics.. but its like a 'building blocks' game)
My expectation from computer classes was to build some screens or applications , ( but generally I got bored with theory . there was my fault too , i admit ) . Computer applications/commands did not look like mathematical problem ,But computer subjects seems to me as mathematics subject. ( I know they really need maths, when we deep dive).
But as a beginner, I misunderstood that someone who knows deep maths can only do something with computer .. but actually that is not the case.
Whatever programs I studied/taught to do something with stdin ( standard input) or stdout( standard /the screen), are something like 'reverse string' or 'search character', but they did not generate any motivation to build some real world applications, rather I got scared even to attempt/read big programs, thinking it might require big logical algorithms that my brain can't digest. but as student I always wanted to build something like 'vi' (editor) or some commands or something having windows (not Microsoft windows) screen. At least I wanted to know how these functionalities are coming in the screen.
When I build some functionality that actual 'vi' editor has , I feels like I am writing programs as a professional (Really its not the case)
Having said all these story :-) as a hobby project , I am trying to build an editor based on the documentation
https://viewsourcecode.org/snaptoken/kilo/03.rawInputAndOutput.html
I am learning lot of things when I wanted my program to do some functionality that 'vi' editor does.
More over I am trying to build this in
Rust language which is a new generation computer programming language , capable of replacing 'C' language. Every system programmers should try to learn it as per
http://web.stanford.edu/class/cs140e/
:-)
My text editor draft , just refreshed the screen :-)
https://github.com/davnav/RustEditor
The clear screen functionality can be easily built with below code, but it was never known to me ( as I know only Fibonacci ... :-) )
// Refresh the screen by writing "x1b[2J" byte to screen
io::stdout().write(b"\x1b[2J");
println!();
// align the cursor to the left top by writing "\x1b[H" byte to screen
io::stdout().write(b"\x1b[H");
but be aware , Rust compiler is ruthless :-) . it makes us read the documentation thoroughly.