Jump to content

What to learn?

uzivkovic997
35 minutes ago, reniat said:

Imo python is perfect for being a very easy intro to basic logic (if, while, for loops, etc.) and a stepping stone to other languages when the person learning has 0 technical background.

And here lies the problem. There are two ways to learn something, the "quick and dirty" way which includes learning on the fly, and the "supposed" way which includes tedious learning of mechanics. Since OP already mentioned he want's to go deep and showed interest in the Write great code books, I think the best fit would be a strictly typed, classic language like the C based languages, Java or alike. This imo will allow to deeply understand the basics of programming. I personally think Scripting languages are "quick and easy" ways to solve day to day problems on the fly while the classic programming is more fit for "proper" software development (proper cause I fail to think of a more fit word).

 

(most) Scripting languages like python teach nothing about what is a number (Computer Science wise), why typing IS a thing, concepts that are so basic but important, many people forget about them and run into deep issues during programming (why can't i use method X for attribute Y, i.e. you can't add strings, you can concatenate them) differences between value and reference types. How things are handled in memory, pointers and more.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, De-Wohli said:

I personally think Scripting languages are "quick and easy" ways to solve day to day problems on the fly while the classic programming is more fit for "proper" software development (proper cause I fail to think of a more fit word).

I 100% agree with this (this is also why I hate web development). The only place I think you and I disagree is pythons value as a very first step for general computer science education. I absolutely don't think you should only learn python (if your aim is to be a developer, its a bit different if you aim to be a data scientist), but as an initial stepping stone when there is no prior technical knowledge I think it has a lot of value.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, reniat said:

I 100% agree with this (this is also why I hate web development)

+1000 points just for that, web is the worst. Damn pixel pushing and janky ass JS stuff.

 

If python would be strictly typed than yeah it's decent as a stepping stone, specially because you don't need compilers or IDEs, you can use what ever you want. But I think stuff like IntelliJ in proper IDEs and the better error messages you get in for example C# gives them still the headstart. Although it's arguable that IntelliJ can be a bad thing too and can enforce bad habits. And yeah I know you have pylinter and alikes but still, personally think that in case of C# the VisualStudio is overwhelming at first glance but really helps understand the code you're writing, if used correctly (don't just auto fix but really think about the suggestions).

 

As for syntax and alike I think as difficulty for entry there isn't a big difference between python and C#, they're both very easy to get into. But depending on importance on various topics it can be hard to choose. It's up to personal focus i.e. get started quick and easy (python) or get started thoroughly and slow (C#).

 

Personally I think it's "more future proof" to get started the thoroughly and slow way and understand what's really happening under the hood. As for the basics like file access, loops etc., they're both equally easy to get started (maybe except file access since C# will get you started with streams right away more or less)

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, De-Wohli said:

It's up to personal focus i.e. get started quick and easy (python) or get started thoroughly and slow (C#).

I guess i'm not convinced that a choice is really there. It's not like if you start learning python you are forbidden from quickly moving to another language. You can introduce students to the basics with python, and then quickly introduce other languages to introduce other deeper concepts. What i'm seeing most CS programs do is 1 semester of python/ruby, and then shifting to Java/C++/C# the next semester. I think this has a lot of value, especially since the very first semester will have lots of students who may not have any experience with programming at all and the 1 semester ramp up lets them have a better chance of isolating the important fundamentals, especially if the class structure and coursework is made well. Granted structured learning is a bit different than individual self learning, but its still worth mentioning python since some may prefer to ramp up even when doing it on their own.

 

7 minutes ago, De-Wohli said:

+1000 points just for that, web is the worst. Damn pixel pushing and janky ass JS stuff.

¯\_(ツ)_/¯ some people love it. I'm definitely not one of those people. More power to them I guess, since it means I don't have to do it.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, reniat said:

than an entirely different syntax paradigm that they won't ever see again?

For a beginner, every syntax is entirely different.

 

You won't see Python syntax outside Python anymore. If you start with Lisp, you might as well have a good career without ever having seen one line of Python. :) This is true for all languages.

 

2 hours ago, De-Wohli said:

If python would be strictly typed than yeah it's decent as a stepping stone

 

That's why I suggested C as well. If you start with C, nothing will ever hurt you again. ?

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, Dat Guy said:

For a beginner, every syntax is entirely different.

Similarity is a gradient, and I feel like it's pretty easy to see that python is closer to the C languages than Lisp.

 

I think even a beginner is going to see "oh I have to add ; to the end of every statement" as far smaller hurdle than "oh that entire S-expression thing I finally got used to is now entirely not applicable"

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

8 minutes ago, reniat said:

python is closer to the C languages than Lisp.

Python is closer to Basic than Lisp.

I've read somewhere that Python can actually be seen as a Lisp...

 

9 minutes ago, reniat said:

oh I have to add ; to the end of every statement

"Oh, a statement is always (, command, parameters, )."

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

20 minutes ago, Dat Guy said:

"Oh, a statement is always (, command, parameters, )."

 

(defun fizzbuzz ()
  (loop for x from 1 to 100 do
    (format t "~&~{~A~}"
      (or (append (when (zerop (mod x 3)) '("Fizz"))
                  (when (zerop (mod x 5)) '("Buzz")))
          (list x)))))
for i in range(1, 101):
    if i % 15 == 0:
        print ("FizzBuzz")
    elif i % 3 == 0:
        print ("Fizz")
    elif i % 5 == 0:
        print ("Buzz")
    else:
        print (i)
for(int i=0; i<=100; i++) {
  if(i%3==0 && i%5==0) {
    System.out.println("FizzBuzz");
  }
  else if(i%5==0) {
    System.out.println("Buzz");
  }
  else if(i%3==0) {
    System.out.println("Fizz");
  }
  else {
    System.out.println(i);
  }
}

I simply cannot agree that Lisp is syntactically equidistant to C langs as python especially when you're talking newbies, who will be spending 90% of their time with loops and conditionals.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

Common Lisp's loops do not follow the usual Lisp syntax and you know that well. ?

Try ITERATE.

 

And again, of those three, Python is the most illogical one: Why "101"?

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Dat Guy said:

And again, of those three, Python is the most illogical one: Why "101"?

While we tend to agree, it's less illogical if you think about what `range()` does. It acts like a `for(i = 1; 1 < 101; i++)` that's pretty much exactly how you would deal with it in most C languages or simply use `<=`. Since that's no possibility in Python you have to do it that way. But here we are talking about python quircks that can make it harder for beginners. Another really hard to grasp concept, that throws me off even more than that kind of stuff, is the way `try; catch;` is used in Python.

 

Lisp is a dual edged sword with it's S-Expression syntax. Yes it really helps understanding the stack mentality but it can be quite confusing for beginners and possibly a little hard on people who never even seen it.

Link to comment
Share on other sites

Link to post
Share on other sites

On 5/12/2019 at 1:23 AM, De-Wohli said:

In contrary to what @PeterBocan suggested, I'd suggest you get into concepts of Programming first, that'll allow you to adopt quickly, there's really not the "one language to rule them all". It's about being able use what suits your task best. If you understand the basic concepts you'll have an easier time to get into what ever you need. Sometimes you'll find yourself in a position where you either have to solve issues really complicated or just use a framework in another language, the latter is the (personally) preferred solution.

 


This is kinda good advice but also kinda - bad. Best advice is combination of concepts + python.To learn and undestand abstract concepts - you would need to write them in some form. Best form is pseudocode, type of writing used in python. 

After you are familiar with concepts, objects, arrays(lists), dictionaries, itterations, incrementations, and other stuff - with python, you will convert to another language (if needed) with no issues.

After that I would recommend improving on system architecture, programming design patters and digital electronics. 

This is my experience, I started with python, now i know JS, python and bit of c/cpp. I even combine c and python with cython for fun sometimes. 

 

Link to comment
Share on other sites

Link to post
Share on other sites

10 hours ago, De-Wohli said:

And here lies the problem. There are two ways to learn something, the "quick and dirty" way which includes learning on the fly, and the "supposed" way which includes tedious learning of mechanics. Since OP already mentioned he want's to go deep and showed interest in the Write great code books, I think the best fit would be a strictly typed, classic language like the C based languages, Java or alike. This imo will allow to deeply understand the basics of programming. I personally think Scripting languages are "quick and easy" ways to solve day to day problems on the fly while the classic programming is more fit for "proper" software development (proper cause I fail to think of a more fit word).

 

(most) Scripting languages like python teach nothing about what is a number (Computer Science wise), why typing IS a thing, concepts that are so basic but important, many people forget about them and run into deep issues during programming (why can't i use method X for attribute Y, i.e. you can't add strings, you can concatenate them) differences between value and reference types. How things are handled in memory, pointers and more.

stryctlyyping has nothing to do with it. Everyone learns with pseudocodes first. 

only difference between

i = 0 

for i in range(10):

 print(i)

and 

int main()

}
for (i =0; i<=10; i++)
	{
	printf("%d", i);
	}
{

is potential for syntax mistake that can frustrate people much. 


Who understand first one, and its way easyer to understand whats going on in frist one will transfer to second one with no issues.


So +1 for python as starting lang. 

 

edit:

I realised that i made a mistake, i forgot int in front of i, and i am developer. Imagine bigginer and that amount of time lost of frustration for mistakes like that one? 

Link to comment
Share on other sites

Link to post
Share on other sites

Python is simply a much more readable English. I like readable langauges. Intuitive and simple. Pick it as the beginner language.

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

Not too sure about the readable english part there @wasab most languages can get very confusing.

 

Simple Bubble Sort:

C#

    public static class BubbleSortMethods
    {
        public static void BubbleSort<T>(this List<T> list) where T : IComparable
        {
            bool madeChanges;
            int itemCount = list.Count;
            do
            {
                madeChanges = false;
                itemCount--;
                for (int i = 0; i < itemCount; i++)
                {
                    if (list[i].CompareTo(list[i + 1]) > 0)
                    {
                        T temp = list[i + 1];
                        list[i + 1] = list[i];
                        list[i] = temp;
                        madeChanges = true;
                    }
                }
            } while (madeChanges);
        }
    }

Python 2

def bubble_sort(seq):
    changed = True
    while changed:
        changed = False
        for i in xrange(len(seq) - 1):
            if seq[i] > seq[i+1]:
                seq[i], seq[i+1] = seq[i+1], seq[i]
                changed = True
    return seq

 

Yes the python version is shorter but I wouldn't say much more or less readable than the C# version above.

 

Personally I don't think the one is significant better readable than the other.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, De-Wohli said:

Not too sure about the readable english part there @wasab most languages can get very confusing.

 

Simple Bubble Sort:

C#

 

Yes the python version is shorter but I wouldn't say much more or less readable than the C# version above.

 

Personally I don't think the one is significant better readable than the other.



I am speaking from my position and i Learned to code on my own. And after that i studied cs. 
It was way less frustrating in beginning writing in python because there was way less chance of making syntax error. And its way easier to find and fix syntax errors in py when you are beginner. 

That's from my perspective. And syntax error are biggest frustration and time waster for beginner coder. 
 

I do agree with you that you would NEED to learn all those cs stuff, system architecture, some math also even basic digital electronics is important. But python in my experience and opinion is way to start to get most knowledge with least frustration. 

 



 

Link to comment
Share on other sites

Link to post
Share on other sites

On 5/12/2019 at 12:52 AM, uzivkovic997 said:

Hello guys,

I know nothing about programming but I would like to start learning some programming language.
What would you recommend me to start with and if you know some free course where I can start with just to learn some basics before I pay for sth?
Things i would like to do in future are creating some software.

What is the easiest language for newbie to start with?
Some people are saying I should start with Python but I want to hear your opinions.

 

Thanks in advance.

Python is a simple way to start, but you can really start with whatever language you want.

Link to comment
Share on other sites

Link to post
Share on other sites

15 hours ago, wasab said:

Python is simply a much more readable English.

Try COBOL.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, Dat Guy said:

Try COBOL.

No

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

If "much more readable English" is what makes a good language for you, COBOL is probably better than Python. Looks like we can agree that "it's a much more readable English" makes no sense when choosing a language.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Had I chosen the "more in depth" path I might not have continued with anything more advanced.When I first started programming I just wanted to make something, it had to be just good enough at least for that beginning period (things I've made were only for myself, not others).Compare setting some libraries up in Python and in C/C++.The difference is huge.

Link to comment
Share on other sites

Link to post
Share on other sites

as you can see...there are many languages to chose from. Decide what you want to program 1st! Games or applications, WEB or Desktop, With Database or Streams? Made it even worse? Robotics, AI? You need to have as much help at start and as much steady learn curve too.

What that brings you on (and for the future) is Java or C#. For games stick to C++ or Java. These 2 give you the base to start learning anything else easier. The opposite is not applied!

You will hear python ...seen mentioned some perl???LISP????Prolog?????python???? NO! not because they are nonsense but because these came to cover some disability in a bigger language...like java for instance....you have to put tabs instead of ; in the end!(OMG~!)

It's your personal choice though try them all in the field you want to program and then decide.

Link to comment
Share on other sites

Link to post
Share on other sites

On 5/11/2019 at 8:37 PM, Dat Guy said:

 Similar to Python, Perl and other popular languages

Perl is popular? You just lost all credibility there. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, Dat Guy said:

Games in Java. If you hate performance.

What years you are talking about? In the past perhaps true, in modern day, java is one of the fastest langauge out there.

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, wasab said:

What years you are talking about? In the past perhaps true, in modern day, java is one of the fastest langauge out there.

in terms of pure execution speed the gap is definitely smaller than it used to be, but there are still some major factors that basically prohibit java from being a high performance game language. The biggest reason is that it's really not worth the effort of porting major game engine to java, so you're stuck with whatever platform those engines give you. The closest would be Unity with C#, but the super high performance engines are almost all C/C++. 

 

Another reason java isn't a great game language is garbage collection. It creates a lot of performance uncertainty, since you really can't control when that happens. There are a few different GC methodologies you can use, but no matter what you are at the mercy of the GC to not collect during a critical moment causing a performance dip. For most desktop development that's not really a huge concern, but in the gaming world of 60fps+ and high refresh rates and "smoothness" being the be all end all metric, java's GC can be nightmare.

 

The exception of course, is the high performance icon Runescape, which is built in java.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×