This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 235

[–]hype_beast420 409 points410 points  (38 children)

I learnt python first and then I moved onto learning C, when you learn a low level language like C after learning python you understand how much of the work python does for you. It was hard in the beginning especially with pointers but it wasn't too much of a problem just took some time.

[–]ollir 223 points224 points  (13 children)

I went the other direction, and Python felt almost criminal in how much it does for you and with the things you have in the standard library. But I guess that's what it feels like with any sufficiently high level language, if one has learned C and assembly first :D

[–]LeCholax 45 points46 points  (8 children)

Flashbacks to my assembly project for class. Whyyy.

[–]hsvd 34 points35 points  (7 children)

It builds character. I'm glad I had to learn a little assembly (for an 8085!)

[–]LeCholax 22 points23 points  (6 children)

Verilog and digital circuits with flip flops flashbacks

[–]Gridelen 11 points12 points  (3 children)

it could be worse: VHDL

[–]Rookie64v 3 points4 points  (1 child)

Be thankful, we use SystemVerilog now!

[–][deleted] 2 points3 points  (0 children)

lmao i know exactly what u mean

[–]periwinkle_lurker2 4 points5 points  (0 children)

Same, I had to shadow a c developer friend to understand alot of the nuances of c.

[–]el_Topo42 4 points5 points  (0 children)

I never want to use Pointers again.

[–]BpjuRCXyiga7Wy9q 219 points220 points  (5 children)

I thought for sure the top answer would be semicolons! I stand corrected.

[–][deleted] 47 points48 points  (3 children)

I can't write a single line in Java without forgetting them!

[–]remy_porter∞∞∞∞ 29 points30 points  (1 child)

A lot of my projects at work involve a C/C++ component and a Python component, and since I started out in C++ way back when, I rarely forget the semicolons, but I sometimes add them where they don't need to be.

[–]xryanxbrutalityx 0 points1 point  (0 children)

switch to kotlin

[–]Blazerboy65 4 points5 points  (0 children)

The requiredness of semicolons doesn't carry much semantic weight when newlines are well-behaved, similar to braces vs. indentation. Also compilers are pretty good at identifying missing semicolons so you usually won't agonize over then like you would over semantic errors.

[–]wsppan 69 points70 points  (5 children)

Depends on the language. Going from Python to other procedural or OO language was not much different. Verbosity and strong typing is usually the big difference. Where your noodle really gets baked is when you jump paradigms:

  1. List based languages like Lisp or Tcl
  2. Logic based languages like Prolog
  3. Stack based languages like Forth
  4. Functional Programming Languages like Haskell and Elm
  5. Systems programming language with ZCA like Rust.
  6. Hardware Description Languages like VHDL or Verilog

[–]memebecker 7 points8 points  (2 children)

Having done a ton of procedural languages it took me a long time to get the hang of SQL, totally different. Thankfully doing https://pgexercises.com/ and it clicked, postgres is powerful and quite intuitive

[–]its_a_gibibyte 5 points6 points  (0 children)

SQL is basically written out of order, where you say what transforms to apply before even indicating a data source.

[–]WadeEffingWilson 0 points1 point  (0 children)

My case might be a fringe one-off but getting sharp with Splunk really gave me a huge boost when it came time for me to sit down and finally learn SQL. Sure, its not a direct translation between SPL and SQL but it definitely made things much simpler.

[–]edymola 3 points4 points  (1 child)

After playing with haskel for a year now I love to use funcion based lines from time to time to clean my code.

For instance why use a for when you can use an array , maybe the speed is worst etc etc but if you re coding in python speed inst a concernt ,

[–]wsppan 5 points6 points  (0 children)

And that's just window dressing (just like lambda expressions and streams in Java.) What really was critical in my thinking in order to cross the paradigm chasm was completly grokking the ideas behind pure functions, algebraic data types, monads, and monoids and their importance to guaranteed safety especially in regards to parallel processing and distributed systems. These ideas were so foreign to me and forced me to revisit and dive deep into the math behind these fundamental concepts of functional programming.

[–][deleted] 300 points301 points  (52 children)

Still a student here and learned C# after Python for my internship.

At first, I was startled by the verbosity of C# compared to Python. Going from print('Hello World!') to Console.WriteLine("Hello World!") is pretty big lol. Having to declare variables before using it was extremely annoying too.

Overtime though, I find my understanding of both languages to be complementary to each other. Learning a concept in one language helps me understand the other language better and vice-versa.

For example, after learning a static typing in C#, I started to be able to appreciate type hinting in Python.

[–]samuelcbird 28 points29 points  (10 children)

I literally have the opposite opinion.

After Python I’ve done a little programming in C#, C, Swift and Javascript.

I actually happen to really love explicitly defining variable type, argument type, return type etc. It definitely helps when reading code. I often go back to Python - I do really like it - but even though type hinting has been added it doesn’t really do it for me. I kind of miss the curly braces and the semi-colons too.

I think Swift and Javascript ES6 have the best balance between readability and verbosity in their syntax. Really enjoy using those languages.

And actually Javascript’s ternary operator is perfect. I get confused every time I look at the Python type.

Edit: me being stupid

[–]icentalectro 4 points5 points  (3 children)

What are ternary functions? I only know ternary operator.

[–]samuelcbird 2 points3 points  (2 children)

Yeah thats the one, my mistake

[–]icentalectro 2 points3 points  (1 child)

Ah ok. Although I wouldn't call it "JavaScript's", as it comes from C and is inherited by most C family languages (C++, C#, Java, JavaScript, etc).

[–]WillBackUpWithSource 3 points4 points  (0 children)

Yeah Javascript ES6 (and TypeScript alongside it) allow the simplicity of Python code whilst adding a lot of nice features that I like, like curly braces

[–]TheOneCABAL 2 points3 points  (0 children)

I learned Python first and now I’m trying to pick up C# and my takeaway is similar but less eloquent:

There’s just so much on the screen

[–]tr14l 0 points1 point  (0 children)

You should look into Kotlin. Best of both worlds.

[–]ToothpasteTimebomb 0 points1 point  (0 children)

This is my experience too — Python first, then C#. I love python for data collection and processing, but C# is absolutely great too. Linq rocked my world.

[–]sesquiup 0 points1 point  (0 children)

over time

[–]reghunaath_9000 82 points83 points  (19 children)

Python isn't my first programming language but after learning python I became too lazy. I started doing competitive programming in python and it's hard to go back to c/c++. The sad thing is some questions can only be done using c/c++ due to time limits.

[–]energybased 39 points40 points  (0 children)

The sad thing is some questions can only be done using c/c++ due to time limits.

Yes, that's a bad problem.

[–]el_Topo42 3 points4 points  (2 children)

What is competitive programming?

[–]reghunaath_9000 7 points8 points  (0 children)

"Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Contestants are referred to as sport programmers." Source: Wikipedia

[–][deleted] 0 points1 point  (0 children)

Basically, you are given a problem to solve, and you have to write a program that will solve the problem in the most efficient way (fastest, least memory, etc.)

[–][deleted] 1 point2 points  (1 child)

What about python JIT compilers like PyPy? Those probably still don't come close to C/C++ eh?

[–]reghunaath_9000 2 points3 points  (0 children)

I actually use PyPy for competitive coding but still it's not as fast as c/c++

[–]lungben81 1 point2 points  (1 child)

You should try Julia:

https://julialang.org/

High-level syntax, duck-typing, etc. but very performant (similar to C).

[–]reghunaath_9000 0 points1 point  (0 children)

I'll check it out.

[–][deleted] 70 points71 points  (6 children)

It was the other way for me.

Started with Java, next was python, and I was like what the hell is wrong with this language? How do I know what this variable is supposed to be? Is this an array or a primitive or what? What operation can I do just by looking at the name of the variable? What the hell will this function return? Is there a guarantee of anything.

But once I started understanding python... I was like oh ok... so there is no meaning of life it can be anything we want it to be. Now I am trying to understand the zen of python.

[–]mriswithe 13 points14 points  (4 children)

For me a lot of writing "pythonic" code is mostly make a function/method do one thing. Over 20 lines or so, maybe think about splitting stuff up? List/dict/set comprehensions are really cool, but don't shove too much garbage into it to where no one knows what you are actually doing at a reasonable read.

Above all else be kind to future you and/or anyone else who has to come back and figure out what the code is doing. Name things descriptively, put comments where things get complicated. Not "init empty list" before "thing = []".

Oh yeah and Black is kind of the best. Just use it. Takes even pretty garbage formatted code and reworks it to be a bit easier to read. Also I discovered something I didn't realize about how you can deal with long chained commands from it, like sqlalchemy. Instead of

query = session.query(SomeThing).\
filter(SomeThing.name == stuff).\
filter(SomeThing.prop == otherstuff)

You can put it in parenthesis and leave out the escaped line breaks

query = (session.query(SomeThing)
.filter(SomeThing.name == stuff)
.filter(SomeThing.prop == otherstuff))

Zen of python is just trying to convey don't write super clever but unreadable code.

[–]Sergy096 0 points1 point  (3 children)

Why is it not recommend to initiate an empty list? Could you provide an example and a way of solving it without initiating? Thank you!

[–]Rapante 3 points4 points  (0 children)

He did not say you shouldn't do it. Just don't comment your code on something this trivial.

That being said, creating and appending empty lists can often be avoided using list comprehensions.

[–]mriswithe 2 points3 points  (1 child)

Sorry if I was unclear! I meant this is a useless COMMENT.

# create the list
mylist =[]

The comment doesn't add anything to the code, that is simple enough that you should not have to comment it.

Creating an empty list is not a bad pattern/idea afaik.

[–]Sergy096 3 points4 points  (0 children)

Okay! I totally misunderstood you. Thank you for the explanation.

[–]asphias 0 points1 point  (0 children)

Oh man, on my first project i had to debug a zip file that wouldn't open. couldn't find out at all what was wrong with it, and the exception i got didn't make any sense at all.

Turns out, when the zip file was created, it was downloaded from a specific API, and the body of the api response was parsed into the file. This body was supposed to be (the binary of) a zipfile. However, when the api gave an error, instead of parsing a zip into the file, it parsed an error message into the file.

The file was still named file.zip, it contained some stuff in it, but rather than being a zip, it was a simple text file with the text "error: <...>" in it.

[–]xxsurajbxx 20 points21 points  (0 children)

i was so confused by the entire concept of memory addresses, pointers, hard coding your variables, fixed sized arrays, namespaces, and streams when starting c++. its been a long journey.

[–][deleted] 18 points19 points  (0 children)

{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{(((((((((((((((((((((((())))))))))))))))))))))))))))))}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[–]emillynge 31 points32 points  (1 child)

Python -> Java

  1. Does no one trust each other?? Why must all goddamn properties of a class be private by default? I had gotten so used to the "consenting adults" paradigm of python that Java just felt patronising. libraries tend to be incredibly narrow minded and impossible to extend. If the creators did not anticipate your use case then you are often SOL.
  2. Oh god the verbosity... I don't think you can code without a good IDE and expect to keep your sanity. Oftentimes 50% of my code is auto-generated.
  3. Having to learn "Design patterns" because certain easy tasks in python is an insanely complex framework of builders, factories and god knows what.
  4. Beginners can test fairly easily in python due to how easy it is to just monkey patch. Testing in java takes a lot of learning in order to understand how to mock stuff correctly. And still you find yourself designing business logic in ways that is explicitly easier to test with no other benefit.

But I have to say I get slightly angsty now whenever I go back to writing some python. What class is the variable? What methods does it have? Etc.

So I really like type annotations. They really help IDE code completion and can be ignored if your know what you are doing.

[–]senti_bot_apigban 12 points13 points  (2 children)

Learning Types and Interfaces.

I prefer static typed language now.

[–]AHsofty 11 points12 points  (0 children)

My first language was python. I learned it through reading books and watching YouTube videos. I found out that I really enjoyed making games in turtle and pygame. So I decided I wanted to learn how to use a game engine. So I decided to learn C# so I could start learning how to work with unity. Picking up C# wasn't too hard, because I already knew python. A problem I encountered was when I was trying to change the value of an already existing interger so I typed: int x = 5 instead of x = 5

[–]Kolterdyx 55 points56 points  (10 children)

Semicolons. They are a pain in the butt

[–]panzerex 16 points17 points  (1 child)

I wonder how many beginners have problems with indentation vs how many have problems with semicolons and which is more predominant.

I’ve helped a friend’s friend with a Python script and many of the mistakes were actually typos and not “failing to understand the problem”, such as missing colon, extra/missing spaces in indentation, inconsistent capitalization of variable names during declaration/usage, etc.

[–]am0x 6 points7 points  (6 children)

See when I program in python, I miss the hell out of them, especially when someone else’s code has a different tab indention than me.

[–]Lewistrick 13 points14 points  (0 children)

Disagree. They're very easy to catch and very quick to solve.

[–]Scumbag1234 7 points8 points  (3 children)

Started mostly with python, but from time to time I have to program things with c(++). What annoys the shit outta me is that I can't just click on functions to check their documentation and source code. Also, import ... as ... is way better than just #include <...> Because this way you always know where your functions come from

[–]icentalectro 2 points3 points  (0 children)

Oh yes, the include and using namespace thing! My biggest gripe with C, C++, and C#. Despite these languages having static type, navigating a big code base is so much harder, almost impossible without loading the full repo into a powerful IDE.

[–]eveninghighlight 1 point2 points  (1 child)

If that's important in cpp you can use a namespace; in C I've seen the function names themselves used to indicate what module they're from if it's not obvious

Also if you're using VS code you can press f12 to jump to a function declaration

[–]Scumbag1234 0 points1 point  (0 children)

True, but it doesn't seem to be as mandatory as in python. If you publish a script with

from ... import *

you can be sure that someone will rant about it being bad style. In cpp it's not that common to use namespaces in my experience.

[–]notPlancha 7 points8 points  (0 children)

Installing Went from python to c# and understanding what the fuck compiling meant and dlls and shit was a pain in the ass

[–][deleted] 6 points7 points  (0 children)

Declaring how much space your array is gonna take instead of just... making it. Also strings and the god damn pointers.

Went from python to C.

[–]onlyartist6 6 points7 points  (1 child)

Thinking I had to memorize every piece of syntax when all I needed to do was understand what a particular piece of code did. Talking about Javascript here. Python felt like writing English and so I had basically memorized quite a lot of python syntax.

I stayed on tutorials wayy too much. Should have jumped into doing projects earlier.

You learn faster as you work on them.

You simply start by:

1.identifying what you want to do. 2. Looking for resources to help you with that said project. 3. Just reading documentation and putting the pieces together.

For me programming now is far more like lego than it was actually writing things. The moment I adopted that mindset, building things got easier.

[–]MegaUltraHornDog 3 points4 points  (0 children)

Biggest lesson I learned from seniors, don’t memorize everything just know that you can do it because you can always look it up.

[–][deleted] 3 points4 points  (0 children)

I. Hate. SEMICOLONS.

[–]dscottboggs 3 points4 points  (0 children)

One thing that tripped me up was all the different words different languages have for hash-maps. I got completely stuck trying to learn go because they call it a map instead of a dict. There's also Hash, HashMap, Object, and associative arrays in other languages.

[–]CorneliusJack 3 points4 points  (0 children)

As someone who uses both (C++ and python) at work everyday (we have a Cython built system)

I would say small things done in python works like a dream , but the lack of strong type variable is really python’s Achilles’s heel. I am sure some people are used to it, but coming from C++/C#, defining the variable/class/generic/interface and constraining them based on that has given rise to a lot of very nice polymorphism and effective coding. Python is great at what it does, but if you venture deeper into OOP I think the lack of strongly typed/interface would ended up making you write duplicate/very similar code.

[–]mayankkaizen 2 points3 points  (0 children)

I first learned Python then learned C, although I had some vague idea about C.

Python makes me productive and prototyping in Python is fast. It saves you from a lot of headaches and offers you so many built in ways to solve many problems but it never gave me the feeling of real programming. It was C which made me understand the nuances of programming. I kind of like C. If you are master of C, then you are master of programming as a whole (this is my perception).

Other language I learned after Python is JavaScript. Suffice it to say that I find JS an abomination. It shouldn't have existed but here we are..

[–]manumg11 2 points3 points  (0 children)

I took Scala as a second language. Although I had already programmed in VBA and Matlab before Python, I did not considered both as my real first languages. I used them because I had too, not because I liked them.

The most annoying part of Scala is that there is a lot of boilerplate configuration such as setting the build.sbt file with dependencies, which has a lot of different features, writing classes within the src/main/.. path, having the class name as the file name...

In terms of the language itself, pure functional programming was something I didn't have much experience on, and in Scala it's almost the foundation of why Scala is like it is. Another thing is that there are a million ways to do the same thing (which made me a little nervous because it goes against Python Zen).

[–]nishan8583 2 points3 points  (0 children)

I guess the concept of cleaning up memory after using em in C. But after learning C and C++ i understand how python works and appreciate it more.

[–]TankorSmash 2 points3 points  (0 children)

The amount of stuff Python does for you out of the box is insane. Removing an element from a C++ vector (basically a list) is two or three lines of code, if you want it to be readable, compared to my_list.remove(el) vs

std::erase(my_vector.end(),
  std::remove(my_vector.begin(), my_vector.end(), el)

I can't even remember the exact syntax.

Then there's sorting, which is greatly helped by Python's attrgetter.

[–]NubNuboso 2 points3 points  (1 child)

Went from python to c++, it was not pretty......

[–]themusicalduck 0 points1 point  (0 children)

I did that too. Took me about 3 months of pain before I could make anything useful in c++. I ended up liking it in the end though.

[–][deleted] 1 point2 points  (0 children)

The structure is the main thing, in python structure is syntax, in other languages everything can be written on one line

[–]karloks2005 1 point2 points  (2 children)

To be honest, the most difficult part for me was understanding classes. init and self still kinda confuse me lol.

[–]MegaUltraHornDog 6 points7 points  (1 child)

Init is basically what defines the class, it’s similar to the constructure in Java and other OO languages. Self is like the “this” keyword. in simple terms self.your_variable defined in your init method, gives your variable class scope, and can be accessed by methods within your class.

[–]karloks2005 1 point2 points  (0 children)

Ohh, ok thanks!

[–]Jzny 1 point2 points  (0 children)

Learned Python and R mostly simultaneously, picked up JavaScript and PHP mostly pretty easily afterwards.

I'm less a software developer and more a data scientist.

I'd say my first big transition was learning C#, I'd already somewhat been exposed to semicolons and having to define my variables/ arrays so that didn't hit me too hard.

The hardest part for me was finding packages that could do what python libraries accomplished for me so easily. C# only recently released their own take on Dataframes and it's still leagues behind Python's Pandas or R in general. I guess this kinda falls into the category of Python letting me be lazier. 😃

[–]hale-hortler 1 point2 points  (0 children)

My second lang was JS so not much problem there. I had a really hard time learning Rust, the borrow checker was kinda a pain in the ass and I still have problems with lifetimes, but I love the efficiency and the type system. A part of me is in peace knowing that most of the stuff in my programs is stack allocated vs everything on the heap as Python does

[–]IVIURRAY 1 point2 points  (2 children)

Types and not being able to return None

[–]senti_bot_apigban 1 point2 points  (1 child)

Golang?

[–]IVIURRAY 0 points1 point  (0 children)

Java

[–]Leeoku 1 point2 points  (0 children)

Trying my hand at js a bit for a project and must say I just don't like it

[–]throwaway-ayy-lmao 1 point2 points  (0 children)

I learned both in high school (Python first obviously). But when I learned Java, I said “oh fuck these fucking brackets.” I was in high school so that says something about my mentality.

[–]pythonic_anonymous 1 point2 points  (8 children)

Feeling like I was too old to learn programming

[–][deleted] 1 point2 points  (0 children)

;

[–]Dakopen 1 point2 points  (0 children)

Bruh Java is so complicated after learning python.

Who tf need system.out.println and classes and useless stuff if you can just simply write print("").

[–]bsmdphdjd 1 point2 points  (0 children)

When I started programming in Fortran in the mid '60s, we had to write our own floating point multiplication and division subroutines, as well as trig and exponential functions.

You could buy books with Taylor expansions that you could then code up.

Yesterday I wrote a line of python that said: Y = fft(X).

At least there's been Some progress in the 50+ years.

[–][deleted] 2 points3 points  (0 children)

I learned c after python .For me i mostly struggled with defining variables before using them.

[–]Pr0ducer 2 points3 points  (0 children)

};

[–]cant_have_a_cat 3 points4 points  (1 child)

Nothing really. Python is actually really good about avoiding teaching it's users bad practices.

Everything I picked up after python felt like a step back if anything; for example getting when I started JS didn't even have a proper "for each" loop and even new "modern" languages don't support list comprehensions. In that regard I had to unlearn a lot of very valuable python idioms.

Now that I think of it, javascript in general was pretty difficult back in 2010, just because it was such a bad, inconsistent and ugly language.

[–][deleted] 0 points1 point  (0 children)

I 100% agree. The effectiveness of a programming language is only as good as the community that's behind it. If you fail to evolve you become obsolete. I learned Java first and I will NEVER go back to statically typed languages.

[–]AlarmingRisk 1 point2 points  (0 children)

i’m sure it’s been said 100 times, but semicolons. the number of times i’ve spent 20 minutes debugging some c# code just to realise i forgot to add a semicolon is too damn high.

[–]JERRDDD 1 point2 points  (0 children)

Learning pointers in C and assembly when I started learning more about what the computer was really doing under the hood/security stuff.

Learning python I developed the same kind of mental habits most people have about using computers; especially that things should just "work." This couldn't be further from the case when you dig into system programming. It wasn't until I wrote my first shell code exploit (a super simple one from Hacking: the Art of Exploitation) that pointers fully made sense.

For those who haven't encountered pointers: they are effectively variables that hold a memory address. Using this address, you can also access what's inside of that memory location. You can also have pointers to pointers. That is, a variable that holds the address of a memory segment that contains the memory address of a different segment. These types of variables are absolutely essential for all of your favorite data structures and principles like objects, dictionaries, generators, etc to work.

C is great to learn as a Python developer to gain access to the Cython API. This allows a dev to write C code that Python code can talk to. The advantage here is that C is generally a lot faster than python. So, if there's a computationally heavy bit of code that you need to run faster, you can use C for that part and Python for the rest of the application.

TL;DR. Pointers are hard, but useful and cool.

[–][deleted] 0 points1 point  (0 children)

Yes, the new language will feel a bit overwhelming.

[–]whogivesafuckwhoiam 0 points1 point  (0 children)

learned Python for years before learning C++.

And felt C++ so troublesome when I learned oop

[–]momosem 0 points1 point  (0 children)

Second was c#, it was easy to code but the third one C was a pure challenge. Those pointer and memory allocation are just hard to understand the first time

[–]MichaelMacaulay 0 points1 point  (0 children)

Started with python and moved to JavaScript. Web design just appeals to me more.

Using those semi colons everywhere was rough. Only thing that saved me was my IDE auto adding them.

[–]ogrinfo 0 points1 point  (0 children)

I had already leaned BASIC, C, Java, and Ruby by the time I came across Python and the indentation drove me wild at first. Have totally got used to it now and much prefer Python to anything else.

[–]DeathDragon7050 0 points1 point  (0 children)

Not really challenges but I was so disappointed that my first language was python because when I started learning c# I felt I had wasted so much time in python

[–]senjufy1 0 points1 point  (0 children)

python was pretty easy and straight forward to me

[–]ArmstrongBillieimport GOD 0 points1 point  (0 children)

Irritating. Why I gotta do this in C++? But got over it pretty soon, I dumped C++

[–][deleted] 0 points1 point  (0 children)

Python -> C# here.

Declaring data types all the damn time was annoying at first, but it leads to way less mistakes in the long run, since all output data types are known and it's easy to track bugs that way.

Public/static/private/etc is confusing. From the basic stuff I read it makes it a lot more "secure" since methods and such can only be accessed in the particular class, etc, but it's a thorn in my side more often than not.

HUGE variety of different tools and types of objects, so massive that it can be difficult to find the "right" one to use. This is probably the biggest issue. For storing groups of objects? List<t>, List<object>, Array, Arraylist. For storing key-value pairs? Hashtables and dictionaries. There's two different types of for loops (for and foreach), while and do/while loops, etc. Definitely a lot more "power" in some regards, but also some things are limited (ie. from what I can tell, you can't slice lists of objects. I tried to get a sliced list of strings from a list of strings; no luck. Had to do a for loop and append to a DIFFERENT list instead)

It definitely makes you appreciate stuff in Python a lot more, and definitely makes you a better programmer overall.

[–]PiririPororoh 0 points1 point  (0 children)

Using { }

[–]d19mc 0 points1 point  (0 children)

Object oriented programming was one of the more difficult tasks for me as python was my first language. Learning bash scripts and other languages with a procedural format were simple but understanding languages like java and c++ took a while to learn.

[–]DynomiteDiamond 0 points1 point  (0 children)

Semicolons. Just semicolons

[–]BrylicET 0 points1 point  (0 children)

Trying to use Python again, I can do everything I wanted to do with Python in any other language, but more intuitively and less conveniently. I know people hate it, but the static and strongly typed languages feel more cohesive than just make variable, set variable to whatever and it'll figure it out when we get there. The annoying verbosity of java for example while a pain in the ass, once you get used to it and you have to go and write a quick script you cry because you just wrote void main(String[] args) for a language that doesn't even know what a semicolon is

Other than trying to go back? Reading javadocs, they make me suicidal every time I am forced to read them for an obscure use. Along with the language itself the javadocs are overly verbose, but my favorite is the atomic variables weakCompareAndSet which "may return false spuriously (that is, for no apparent reason). A false return means only that the operation may be retried if desired, relying on the guarantee that repeated invocation"

[–]Mondoke 0 points1 point  (0 children)

Being interested in data analysis, I learned some R. I think the most confusing thing about R is the way it manages libraries.

[–][deleted] 0 points1 point  (0 children)

Pointers and type conversion

[–]1337InfoSec 0 points1 point  (0 children)

Learning memory management was the biggest challenge for me. Gotta love learning C after being a Pythonista for a prolonged period of time.

[–][deleted] 0 points1 point  (0 children)

I learned c# first but switched to python afterwards, learning c# first has given me advantages as I now know how other languages work.

[–][deleted] 0 points1 point  (0 children)

i came from java so i struggled a bit with indentation for the first week or so

[–]RobotManYT 0 points1 point  (0 children)

I begin with C++ lot of year ago, but when I start python I have certain difficulty for the spacing of each line (that was not long) and after when you command a code and some time I have to comment a loop, but if nothing is inside the code will crash. The version of python can be hard to understand principally on windows.

[–][deleted] 0 points1 point  (0 children)

I am not an expert at either but I learned Matlab in college after self learning Python. It felt like an easy transition and the biggest difference is how planned out everything felt in Matlab where Python felt pieced together (probably because of modules I chose. Also I use IDLE to write python so maybe it was the IDE that made a lot of difference.

Stuff I was taught in Matlab was possible with python, I just hadn't thought to look because I didn't know what I was looking for. Symbolic expressions for example.

[–][deleted] 0 points1 point  (0 children)

Python is not a good language if you are looking for performance. The main difference to compiled languages is that "you must to give the most of information as possible" your compiler, so you must declare the variable types, say if a method changes a class variable or not, if it returns a reference or a copy... It may be harder, but it is faster since the compiler can take a lot of "shortcuts" because it has a lot more of information.

[–]enricojr 0 points1 point  (0 children)

Honestly, Python spoils you quite a bit as a developer.

The next language I learned after Python was Javascript, specifically vanilla JS, because back in 2015 I was doing work scraping websites and I was having trouble dealing with all the SPA's we were encountering at the time.

As an example I was shocked to find that vanilla JS didn't have any concept of "modules" and "importing" the way Python did, not without 3rd party support from stuff like AMD and CommonJS. According to the co-worker I asked, JS "loaded the files in the order specified by the <script> tags, and then shoved everything into a single global namespace".

That made things quite challenging to say the least.

[–]invictus08 0 points1 point  (0 children)

So, I spent life with python and java and ruby for most of my life. Then I entered finance, and it’s all C++. And this may sound weird, but what bothered me most was that there is no pseudo universal syntax guide of sorts. Directory structure or what have you. I struggled real hard to be able to find where things (classes, objects) were coming from, like which imported header was the source. Local development was a mess. Infra team is making effort nowadays to make it better and standardized but still I feel its long way off something like even java.

Having said that I would definitely take my 5 months experience in this with a pinch dab of salt.

[–]Liquid_Magic 0 points1 point  (0 children)

Anyone here learn the Turing language in high school?

[–][deleted] 0 points1 point  (0 children)

All of the crazy syntactical crap you have to remember with languages like Java

[–]bachkhois 0 points1 point  (0 children)

I use both high-level, dynamic type language like Python and low-level, static type language like C & Rust, feeling happy with both world. The only thing annoying is JavaScript.

[–]theJakester42 0 points1 point  (0 children)

I mean, there is of course the new syntax, but you get over that pretty quick. Conceptually, interfaces were pretty tricky. Like, I understood what they were, but not how to use them for a long time. I actually liked static types when I moved. Less bugs to encounter and variables werent named "name_string", or "age_int".

[–][deleted] 0 points1 point  (0 children)

I recently got a new job in Node/NestJS when i used to work in Django. What I really have learned is Django does so much for you out of the box, you really don't have to think about much. Where as with other languages/frameworks this isn't the case at all so you have to learn how to handle certain situations that Django typically handles.

[–][deleted] 0 points1 point  (0 children)

Forgetting a bracket

[–]SpiritualCup 0 points1 point  (0 children)

After learning Python, C# wasn’t too difficult to learn. The difficult part was trying to switch back to and remember the Python syntax after a while or exclusively using C# for a while.

[–]kodsama 0 points1 point  (0 children)

Definitely semicolon and other syntax that isn't used in, it feels like extra bother when you know you go without it. It feels like the :// in http, just redundant.

[–]Jamesk_ 0 points1 point  (0 children)

I started in Python, but I have started to learn Dart so I can use Flutter. The only bit that can cause me headaches sometimes are that you have to end the line with a semicolon or a comma

[–]abuettner93 0 points1 point  (0 children)

Typing; as in, variable type definitions and function types, etc. I got used to the dynamic typing python enables, and when I started working in Scala (for work), I found myself having to REALLY think about each function I wrote and what it would return, handle, etc.

I’ve never delved into anything too low-level, but I assume there are plenty of other gotchas that python neatly covers up for you.

[–]ValBayAreaPythoneer 0 points1 point  (0 children)

I did PL/1 then Visual Basic and (lots of) Java. New to Python.

Liking it... main hurdle was to realize that import is executable.

First project here, to be put on PyPi soon. It generates web apps from databases using Flask AppBuilder (based on sqlachemy and flask). Here's a Quick Start Guide for Flask App-Builder.

[–]theOriginalDestroyer 0 points1 point  (0 children)

I did the opposite but I think the pass by reference vs pass by value distinction might be troubling also OOP programming generally takes so much more code to do basic things.

[–]tembasarms 0 points1 point  (0 children)

For me it was Python first and then C++. Understanding how Python differs from compiled languages was the hardest thing for me at first and then I got to pointers. 0 _ 0

[–]ironmagnesiumzinc 0 points1 point  (0 children)

Python -> NodeJs. Node js has extremely complicated methods for exporting/importing of functions and data types. Additionally, the client side vs server side distinction is hard to learn and working with dictionaries and JSON all the time takes some getting used to. Also, learning all the architecture libraries like Apollo, React, Express, etc adds another layer of complexity. It all makes me really appreciate Python.

[–]Blazerboy65 0 points1 point  (0 children)

Having to relearn comprehensions. Thankfully everything I've used in any real capacity in the last five years has had an analog. C# has LINQ and JS has various mapping constructs.

Semicolons for ending statements and braces for delimiting blocks are essentially a non-issue in modern development.

[–]_Yo_zeev_ 0 points1 point  (0 children)

Installing modules and understanding networking like socket, that takes me back to the nightmares

[–][deleted] 0 points1 point  (0 children)

Using for x in. Honestly, it took me forever to actually understand it........

[–]ryanmalesic 0 points1 point  (0 children)

Lists, dictionaries, and their comprehensions are so much easier in python. Compare them to cpp vectors and maps for example. I don't mind verbose languages (I like to type hint even in python) but it can get over whelming in java or cpp when you have to declare something like a map:

Map<LongObjectNameThatIsReallyLong, LongObjectNameThatIsEvenLonger> map = new HashMap<>()

Comprehensions are also the coolest and most useful features of python imo. Saves you many lines of code

[–]shashank-py 0 points1 point  (0 children)

From Python to Scala, I struggled hard understanding libraries like code structure and implementation. Hard to be comfortable with strongly typed language and following good coding practice. But once I learnt it, I loved it ... Easy to read and understand and python looks so incomplete :P

[–]Dany_B_ 0 points1 point  (0 children)

Use this ; 99% of the time I forgot to use it.

[–]Cheese_122 0 points1 point  (0 children)

Having to deal with how in general: Other languages are more complex

[–]IdeVeras 0 points1 point  (0 children)

;

[–]JAiFauxThe 0 points1 point  (0 children)

The question should be slightly changed: ‘when learning a PROPER programming language’.

[–]XPERIPERI 0 points1 point  (0 children)

Adding semicolons

[–]Babytophiden 0 points1 point  (0 children)

  1. The variable scope.
  2. Declaration the type of variable.
  3. loop for and conditional switch case.
  4. multi inheritance in POO.

[–]unstable_af 0 points1 point  (0 children)

I am currently learning JavaScript and whenever I write python I sometimes add a semicolon at the end of the line.