Simulation vs. Reality

I was playing Dirt 4 as this idea entered my deeply focused mind. As you might know, as a gamer and reader of this blog, Dirt 4 is a rally game that has said to be somewhere in between a simulation and a totally arcade type of driving game. Of course I am once again playing with a game pad instead of a driving wheel. So, that makes it more of an arcade style of play. But what I actually wanted to represent and deal with this blog post is that how can playing something, be it simulation or not, to actually give you a perspective on how to approach a skill or some activity in real life and in reality?

Games can give you an idea of something, for example driving a car. This activity is not real driving. It is something a bit similar. Of course there are no risks. If you would really actually drive a car over 160 kilometers an hour on a road somewhere in the shore of lake Saimaa, Finland, you would have to really have some skills and know-how to even operate the car. There is this thought of driving and kind of a fantasy that are combined when you play a rally game.

Can playing games give you some skills that you can actually use in real life? Yes. Definitely. Sometimes these matters are technical details of the computer and what it does when you play one of your favorite games. I am many times thinking about technical and programming related matters when I am playing a game. I might think about how this particular game works, how it collects your input and keeps, sort of, count of the total progression of the player.

Sometimes, like when I play a basketball game, I start to think some matters that are related to real life basketball. There are lots of facts that you can connect to a video game. A game is always some sort of a representation of what it is trying to model. These models come from real life. Of course games can represent an idea of a game, also. There are types of games that you like to play and there are these genres that tell us about what kind of a game it is.

Playing games is an activity for mind but also for the body. This is why we have eSport events and it is completely understandable, today, that you can compete in playing games. Some games, like chess, are purely for mind and some games even test our nerves and reaction times. That is why some games you can compete in as a professional only if you are a young person.

There might be a way to think through your physical performance in some activity with playing a game about it first. If you think about basketball or driving you have to be able to explain to others what you are doing and how. For example, if you are a coach, you have this vision that no one in the team doesn’t have. You know how players in your team are feeling, what are their skills and you have also an approximation of how they will perform in the game that you are about to participate in soon.

It might be easier to make a game out of some sport than it would be to create a sport out of a game that doesn’t have anything to do with reality. Are we actually always modelling real life when we create a game? We definitely talk about games a lot. There is lots of going on in a game and in a real life. These all things kind of keep mixing up in our minds. Definitely games brings us a way to express things. Sometimes we mix reality with fantasy.

I am really into Java programming. This programming language has a lot to do with models that are made out of real life objects. It is called object oriented programming. If you are interested in this type of thinking I encourage you to seek more information. I don’t have a degree or a deep knowledge in psychology or philosophy. I still wanted to write about this matter. Maybe you got something out of this blog post. I will write a post again, soon.

Setting Up C++ Programming Environment in Windows 10 Is a Pain

Yesterday I was excited and ready to start getting to programming with C++. I thought that it would be nice to learn and to refresh my memory. I have some years ago completed a programming basics course in C++. The idea of having an executable that could be run on a wide range of devices was the idea that was so fascinating to me. I use Windows 10 a lot. So I decided that it would be easiest to just install some IDE and also a compiler.

I was so wrong with my decision. I tried to install Cygwin. During the installation you would have to select all the components that you definitely need for C++ development. There are hundreds of them. If you would like to install all of them that would take days to download and install. So that basically wasn’t an option.

I have been around Java from 2010. I am very familiar with setting up programming environment for it. It is just way easier than with C++. I wanted to code in C++. I just think there are so many options if you learn and use this programming language. What was my solution?

While I was going through the material I found online I figured that it might be easier if I would start with Linux instead of keep hitting my forehead to Windows 10. I know that Microsoft has been trying to make it a bit easier to use Linux’s software on Windows. That however wasn’t the solution for me. So I swithched to my laptop that has a dualboot install of Windows 10 and Ubuntu.

I had already Visual Studio Code installed. All I had to do was to install the extension inside VS Code. That was almost it. I had to look up how to run build inside the IDE but that wasn’t a hard thing to do. So I got to programming quickly.

It was my goal to just write something that would work and refresh my memory on the programming language. As I got my programming environment to work I got to the actual programming. I had to look up some tips on how to present text and read it in online. I am serious as I say that any programming experience in any language makes it way easier to switch to a language that you aren’t already familiar.

C++ is used widely and still in 2022 for programming games and other software. Aside it being a tough to install in Windows it really is a dynamic programming language. There basically aren’t many limitations in what it can be used for. Even websites and desktop applications with a GUI can be build.

What I build yesterday was just a tiny application. Actually it is a personality test with a lot of humourous edges on it. You answer in five questions which give you points for a type of a person you are. There are three types. The personality type that you are is the one that gets most points based on your answers. Yes. And the types are (translated since the application is in Finnish) “a talented model citizen”, “an alcoholic” and “loser”. So you are one of these. I know, there aren’t much of a choice.

Anyways, I had fun all of the about three hours I spend developing this funny or stupid app.  I had fun. It was nice. The program managed to fit into about 150 lines of code. So you can imagine that it wasn’t so complex. It had some basic text that was read in and also printed out. It used different variable types, some loops and decision making with if-else structures and that was basically it.

If you would like to program with C++ yourself I highly recommend using a computer that has Linux installed. I also like Visual Studio Code which is a free text editor or even an IDE (which stands for Integrated Development Environment).

How Has Learning Computer Science Changed?

I was reading this book about JavaScript programming as I thought came to my mind. The book was dealing how you can launch a new web browser window  and how you can do it in JavaScript. I started thinking a bit about this.

I have always programmed something on top of a heavy operating system like Windows 10 or Ubuntu Linux. I am able to create a new window inside a web browser. I am able to produce code that can manipulate the contents of a web page inside the browser. What about the machine level functionality? How computer works inside?

I came to think about this for a second. Earlier, like back in the 80s, computer hobbyists had a computer that they could program a bit simpler and deeper with. It was Commodore 64. This device was partly an electronic device and partly a early personal computer. You could learn programming in BASIC or you could, if you had the talent and will to learn, program in assembler.

Assembler means that you are talking to the machine as close as possible. You get to temper with how the machine uses memory and so on. Commodore 64 was a perfect device for someone to learn skills like programming.

Today we don’t have such hardware. We do have complicated systems running complicated operating systems. You might get yourself a Raspberry Pi but that isn’t the same thing. I recently watched a documentary that was dealing with this issue. Back in 1990s there were people going to study Computer Science in universities. Nearly all of them had some background with C-64. Now there just isn’t a good enough source that you could basically learn and build on to learn some more about this field.

Things in computer technology have been progressing. It has become more and more difficult to learn the basics. It is also required for you to learn more about frameworks and software that runs on these complex systems. But you must remember that there is always the user in this field also. That’s where you can learn a lot.

Learning Some Java

Learning to program takes lots of time. When I first got interested in it I started with basics. I started making small websites with HTML. Then I learned more about CSS and got myself into some basic image manipulation that I had to do to make my websites look nice. Back then I got curious about actual programming. I tried my hand at JavaScript and PHP. As I was trying to learn by myself and not in any school or even in a single course I didn’t get far.

I really got into some, so to say, “real” programming when I started studying in a local school of applied sciences. I completed a course that was named something like “Basics of Programming in Java”. I learned many new and interesting subjects. First thing you have to do when you are just starting is to learn how to set up the environment for the actual programming. You might be using Linux or maybe Windows as your PCs operating system. You might want to install an IDE which stands for Integrated Development Environment. You also have to install, if you are going with Java, Java. I recommend using NetBeans as your IDE. It enables you to do so many other things also.

Learning to make games is based on learning how to program. You have to master the basics first. Then you can slowly progress to some advanced matters. While studying programming you also get to see a lot about how the computer that runs all these games is actually working. This is one of the most interesting thing for me and it also motivates me. I have alwaýs been a bit of a holic learner. That means that I want to analyze what I am learning deeply and know the subject and figure out how it actually works. The opposite of this learning attitude is atomistic attitude. It means that the learner is learning some plain facts that are true about the subject being learned and trying to memorize these.

The picture related to this blog post represents the first Java book that I bought as I started my studies. It got me really far. It took me years to learn almost everything in this book. I haven’t fully stomached all of the contents. It has been about ten years since I bought this book. So that tells you a bit about the quality of the text. This book is now already a bit old. I think today Python has become more popular than Java for the first programming language.

Where you usually start in programming is that you learn what are variables, how you construct the code with control structures,  like if-else-statements, how to use the most common functions that the language provides, how to read in text from user and how to print it and also how basic arrays are used. This small list doesn’t include everything. How I started was that I basically started a short course. Then I started a bit more advanced course. And then another course about object oriented programming. Since we are talking about Java OOP is important. I think with Python this subject isn’t as important.

Programming is only one part of what a graduated software developer has to know to be able to work professionally. While studying I learned a lot about databases, user centered development, testing, communications, foreign languages, physics, electronics, mathematics and so on. I took a course about processors also. I deepened my knowledge in software development as I had to choose my main subject from telecommunications, embedded systems and software. This choice was made after one and a half years of studying.

One thing I would like point out about studying. When it is summer the school is closed. You have to figure how are you going to spend the time. You might be working. You might want to take some remote courses like I did. Just don’t be too lazy andjust  try make use of this time somehow. Otherwise it might be hard to start working on your studies again when the summer is over. So keep that in mind. Resting is required but a pause too long can be harmful.

A huge part of getting employed is how well you understand what it takes to be a professional. You have to find the best frameworks and the most useful programming languages. Teachers know a lot but always someone knows a lot about one thing and someone else knows a lot about other thing. Keep your eye on the companies that are doing the things that you would be interested doing. Make some hobby projects to display your skills. It might be a good idea to share your projects in for example GitHub. And remember to build your resume. You can even add some supplement pages that give the employer an idea about your skills.

If you are going to study programming keep in mind that it takes time. Keep your focus. It’s a long road. Go for it if you really are interested in it.

Social media & sharing icons powered by UltimatelySocial