Skip to content

SFM61319/SFM61319

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 

Repository files navigation

Hi there ๐Ÿ‘‹! I am Avinash, a curious programmer from India!

Like the h3 header above says, My name is Avinash, I am 18 years old. And I am one curious and interesting programmer. I have been programming (not [just] scripting) since I was around 10 years old (one can say I have over 8 years of experience, unofficially).

It all started when I was first taught HTML (officially), along with some CSS and JavaScript (unofficially taught by my teacher, yes she was a cool teacher ๐Ÿ˜Ž) from class 6 to 8 - I know, HTML and CSS aren't programming but markup and styling languages respectively, but JavaScript is (isn't it?) - which piqued my interest in programming. I learnt them as much as I could till class 8, after which in class 9 and 10, I started learning C and C++ on my own.

C++ was what I used to learn and understand Object-Oriented Programming too (and can easily and efficiently implement different Data Structures using classes (with generics too), and write efficient algorithms to process the data held in those structures, all using just the C++ STL). And thanks to C++, and how performant it can be and how much of an optimised code we can write in it, I dug deeper on system architecture and other hardware level stuff and learnt and understood a bit about hardware-level optimizations and how C++ achieves them --
For example, how a small std::vector is generally faster than a small std::list - even for mid-collection insertions and deletions - because of:

  • A vector being array-ish (contiguous blocks of memory, constant-time access of elements just by indices)
  • Indirections being slow (since pointers are used in linked lists)
  • Possible allocation of said vector in CPU data cache and local registers (remember, we are comparing small vectors with small lists, and smaller things may fit in the cache and registers depending on the CPU) for faster access - part of hardware optimization - by the CPU, which also makes shifting of elements for mid-collection insertions/deletions faster than de-referencing of pointers in memory
  • CPU Branch Prediction - again, part of hardware optimization, being ahead by predicting the next 15 to 20 actions based on the past action(s), hence knowing what to do and being faster - which works for contiguous blocks of memory of the same data type, but not for random pointers pointing to different memory locations - which have to be de-referenced first - causing CPU misprediction (pointer indirection being responsible again)

-- Apart from it already being faster than most languages because of it being compiled, statically typed, and it's ability to compile to native bytecode.

Then in class 11 and 12, I chose Computer Science (over Physical Education), in which I was taught about computers, operating systems, different types of languages (and their categories and sub-categories), and mainly, Python 3 and MySQL.
Python being so simple, readable, and hence easy (while less performant, quite the opposite of C++ in most aspects), quickly became one of my favorite languages (the other favorites being, C++ (my favorite-est language) and C# - I'll come to C# in a few seconds I mean words). I do everyday basic automation in Python whenever possible, and write (what I find to be) useful Python libraries (though I may never publish them to PyPI), and Machine Learning, Deep Learning and Artifical Intelligence projects. Apart from Python 3, I also learnt C# on my own in class 11 and 12. And C# is, in my humble opinion, Java, but good (I actually once wrote a thirty-pointer on why C# is much better than Java). It's just too good. And then, knowing JavaScript and C#, I learnt TypeScript. It's the perfect blend of JavaScript and C#.

And as of now, I can write vanilla HTML, CSS, and JS, or ReactJS/TS frontend websites, with Django (Python), Node.js (using the express.js library), or ASP.NET (Core) backend, with MySQL, SQL, MongoDB or PostgreSQL databases. I can also write modern Windows desktop apps (WPF or UWP) in C# (with XAML) and/or C++. And I can quickly write simple Tkinter apps in Python. I can write all these projects with proper version control using Git.

And finally coming to the favorites in the meta part, my favorite code editor is Visual Studio Code (although I use vim 8.2 - and I like vim too - on Arch Linux ARM on my Android phone, and compile and run code using compilers like GCC, G++, Mono C#, and interpreters like Node.js and Python 3 for Arch Linux ARM, due to "hardware insufficiencies"), and IDE is Visual Studio 2022 (it was Visual Studio 2019 until Visual Studio 2022 was released).

To sum it all up, I'm an enthusiastic and a curious learner and a programmer who absolutely loves programming. And a little known secret, I took up CSE not because of the pay or the job opportunities, but because I love programming. I want to work for Google and Microsoft one day, especially the Google search engine, Android OS, Material UI (now Material You), and the Google Assistant areas in Google, and Windows 11, WinUI, Fluent UI, and a few more areas in Microsoft.

Well, this (hopefully) explained about the programmer in me in less than 5 minutes.

Thanks for reading!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published