Batikanor

Batıkan Bora ORMANCI



Writing a book about programming

...
I've tried to write a book about programming with Java. Not that I was that qualified with it, but I thought that the sector lacked some fundamental points. I've ultimately paused the project and I don't plan to return anytime soon, but maybe I will.

    I will start by categorizing the programming languages in ways that I think would affect the types of books that had been written about them the most.

    Then I will comment about why I've chosen java as the language I studied throughout the book and hopefully make it reasonable.

    The most important section will be the third one. There I will write about the model I thought I would use to structure my book and the reasoning behind it.

    1. Categorizations of Programming Languages

    Categorization 1

    1. Old and famous programming languages

    2. Old but not-so-widespread programming languages

    3. New and endorsed programming langauges (e.g. Google strongly recommends Kotlin)

    4. New programming languages with small communities

    Of course 'old' and 'new' are relative, but you get the point...

    Lets start with languages of the first category, and have java as an example. These books probably have the most amount of books written about them and the structure of these books usually contain both modern conventions and relations to even older languages, which makes them quite informing. Languages of the second category are, as far as I've observed (Please correct me if I'm wrong) usually don't have books with modern conventions and therefore are quite a bad choice for beginners. Languages of the third category usually are still changing rapidly and don't have books that can be informing in a stable way. They may be useful for beginners but as far as I've observed most of them have added way too many abstraction levels to their syntax that It makes it harder to learn lower level details with them. A lot of people recommend these languages for beginners, but I think some (definitely not all) languages of category 1 are better for beginners (who want to do programming for a career). My personal favorite, by the way, would be java. If I were to say one thing about languages of category four, I'd say it depends on the community, but some of them may be quite friendly and they may enable you to get a good job. However, most of them are believed to be waste of time to learn, especially for non-proficient programmers.

    Categorization 2

    1. Low level programming languages

    2. Mid level programming languages

    3. High level programming languages

    The question I asked was, "which one of these three would be the most useful for all types of readers" and my answer ended up being "somewhere between 2 and 3". Reason: Quite a huge portion of the people I've met so far don't feel any interest about the lower level details. In fact, they see programming as a sole tool to realize projects.

    For the book I planned to write, I thought I needed to use a language that met the following criteria:

    1. The language should be somehow useful to me aswell ( I mean, come on...)

    2. People should be capable of using the language right away, right after having learned it

    3. The language should have a level of abstraction high enough, so that the readers don't dive into maybe not so urgent lower level details, but not too high, so that the readers will be able to not just solve problems, but improve them and see the logical steps behind the improvements.

    2. Java

    Pros:

    • I believe it is quite well structured. The classes and instances have a quite realistic feeling to them and that also makes any further abstraction easier to sell.

    • Easier to learn than

    • Useful in multiple platforms

    Cons:

    • Most tutorials and sources out there are outdated or unorganized

    • Doesn't enable the learner to explicitly understand some fundamental concepts that could be simply covered with c

    3. The Book

    If you hadn't known about them already, you may have realised that I didn't explain what low, mid and high level languages meant under Categorization 2. I think the biggest achievement an academical article or book may reach would be to enable its follower to go over its limits, and the second most important would maybe be to survive from entropy.

    The book I planned was more like a reference guide with example implementations than a conventional book. I've written about 20-30 pages and then gave a pause after which I never chose to resume as I moved on with other sorts of interests. You may think that many books already tell people to read documentations, but what I did was I asked the reader to search for the answer themselves and I've only asked a couple or so questions, rest of the questions would also be left to the reader. But the reader can't really do that by their own, thats why they required some sort of a tutorial to follow in the first place. And people from different locales would get different search results, which would make the outputs of their self-research harder to predict, and would ultimately harm the flow of the book. The solution I came up can be superficially explained with the following:

    1. Advise the readers to prepare nice learning environments for themselves

    2. Provide a searching mechanism that yields about the same results for everyone

    3. Provide methods to get efficient results by making the best queries possible

    4. Ask questions, introduce short themes, or provide small examples to guide the reader to the end of the book while not leaving any fundamental topic untouched, leave the rest to the reader.

    The tool I chose was DuckDuckGo. DuckDuckGo is a searching engine that by default yields approx. the same results from all around the world. But what also mattered was how fast the searches may take place, therefore I've advised using a cmdline utility called 'ddgr' which would enable readers to open a browser, make a query, and open the first result page just with a simple short command within seconds. e.g. " ddgr -j batikanor" (alternative: firefox batikanor.com/d/batikanor OR linkx.tk/d/batikanor ) This, in a way, is revolutionary. This is way different than giving people links to click. This points to content that will change over time, but if it is written well enough, the content that is being pointed to will get more and more useful over time! This also doesn't always bring the readers to official pages, but sometimes it points to websites like stackoverflow where they may also find some answers. The book was meant to teach people how to search the web, but without straying too far off. This would also ultimately enable them to realize their first project with their own ideas. Because in most tutorials, books or so you just copy the steps of the creator, wishing some things would stick to your mind aswell. But with this book, people could actually use their imagination.



    Created by Batıkan Bora ORMANCI, Ⓒ2020