Should I Improve My Skills in C or Python During My Vacation?

  • Context: Python 
  • Thread starter Thread starter SuperMiguel
  • Start date Start date
  • Tags Tags
    Python
Click For Summary

Discussion Overview

The discussion revolves around whether a Computer Engineering student should focus on improving skills in C or Python during a two-month vacation. Participants explore the implications of each language in terms of learning, application, and personal interest, while also considering other programming languages.

Discussion Character

  • Debate/contested
  • Technical explanation
  • Exploratory

Main Points Raised

  • One participant suggests focusing on C due to its relevance in low-level programming and multi-platform design, emphasizing its utility in understanding memory and device interactions.
  • Another participant argues that it ultimately does not matter which language to learn, as the principles of imperative programming are transferable across languages, and familiarity with one language can facilitate learning others.
  • Some participants highlight the importance of personal interest and specific goals in choosing which language to improve, noting that learning Python can be justified if it aligns with personal curiosity or project needs.
  • Concerns are raised about the time investment required for C compared to Python, with one participant mentioning that Python allows for quicker coding and adequate performance for general programming tasks.
  • Recommendations for other languages are made, including Java for Android development, Haskell for functional programming, and C++ or C# for PC development, suggesting a broader exploration beyond just C and Python.

Areas of Agreement / Disagreement

Participants express differing views on the importance of C versus Python, with no consensus reached on which language is definitively better to focus on during the vacation. The discussion remains unresolved regarding the best approach to skill improvement.

Contextual Notes

Participants mention various factors influencing their recommendations, such as the specific requirements of Computer Engineering versus Computer Science, the nature of programming tasks, and personal learning preferences. These factors introduce complexity and uncertainty into the decision-making process.

Who May Find This Useful

This discussion may be useful for students in Computer Engineering or Computer Science considering which programming language to focus on for skill improvement, as well as hobbyist programmers looking for insights on language applicability and learning strategies.

SuperMiguel
Messages
109
Reaction score
0
Im a Comp Eng student, and i have about 2 month of vacation, but i really got nothing to do.. I know C better than python, just wonder if in this 2 months, what you guys recommend i should get better at C or at python?

Note: those are the only two languages i know so I am open to other recommendations.
 
Technology news on Phys.org
SuperMiguel said:
Im a Comp Eng student, and i have about 2 month of vacation, but i really got nothing to do.. I know C better than python, just wonder if in this 2 months, what you guys recommend i should get better at C or at python?

Note: those are the only two languages i know so I am open to other recommendations.

Hey SuperMiguel.

For your question, and given you are a Computer Engineering student, I recommend you progressing with C.

The reason behind my suggestion is that C is a kind of low high-level language that is used extensively for multi-platform design, and in particular for environments where you use specialized forms of the language to directly program custom hardware platforms.

Being a computer engineer means having a tendency to work in these kinds of environments as opposed to the much higher level ones commonly used in the standard x64 or similar environment on say a Windows OS.

The other reason for getting C down is that once you really know what is going on with C, you will be able to take that knowledge and apply it to anything else. A few examples are in order:

Firstly, if you are able to debug anything effectively in C whether it's some kind of memory access error (which represents a majority of the problems), some kind of stack error, allocation error, device error, library error, and so on, then when you move to another environment like say an interpreted language like Python or even something like .NET, you will be able to at least get a pretextual picture of what is probably going wrong, because you will understand things at the memory, device, and other levels.

Secondly, because most procedural languages are pretty much the same, knowing one in a great depth is easily translatable to another and the depth of knowing one is a lot better than just knowing a lot without any deep context or clarity.

The thing is that when you develop, you will have to adapt to whatever is used and whatever is required to get what you need done which means that at some point, you will probably have to pick up something quick that has a reference point to what you have done in the past like say C.

I don't know if you have specific goals though that deviate from this, and it's important to also state that learning Python for the sake of learning because it is interesting, or has a specific library, or anything else is more than enough of a reason to choose Python.

If you have a specific goal in mind or at least a directed form of investigation, it would benefit the readers if this was made clear.

One thing that I have learned in my experience is that it's a lot easier to do something when you have a clear direction. When the direction is not clear, then it becomes hard to really stick to something and things tend not to get done when you just do things that are all over the place.

Investigation though does not mean that everything goes according to a plan that is down the second: it will involve unexpected discoveries, lessons, and its share of failures.

The basic idea though is to set a few very simple, but flexible goals that have enough room for investigation, discovery, and relaxation of rigidity, but definite enough so that at the end you actually make what you would consider substantial progress to getting that particular thing done.
 
SuperMiguel said:
Im a Comp Eng student, and i have about 2 month of vacation, but i really got nothing to do.. I know C better than python, just wonder if in this 2 months, what you guys recommend i should get better at C or at python? Note: those are the only two languages i know so I am open to other recommendations.

I know C and Python and am familiar with embedded hardware e.g. Arduino but I am approaching this as a CompSci BSc and hobbyist programmer - not CompEng or CSEE.

From where I sit, it doesn't matter which you learn. All imperative languages work in the same way. If you can write fibonnaci or prime number search in C or in Python, you know how do it in the other, and also any other imperative lang like Java, Ruby, Ada, Pascal, Fortran etc. You might not know the specific syntax of e.g. a for loop in Pascal but you understand what it is and when to use it, and you can look up the syntax in 5 seconds on Google.

I could write

for a := 1 to 5 begin
print a*a
next a

And you understand that - despite it being neither Python nor C. (If you don't understand that, there is a problem).

So, not counting the ENG part of your course, learn the one that you like better, that let's you code quicker, had better tutorials, whatever. It won't really matter from a CompSci point of view.

I don't understand the specific requirements of the ENG part but I know that both Python and C (as opposed to C++) are well used in engineering circles. C obviously produces faster and smaller code than Python, but then again it takes much longer to write (and it depresses me with how much longer it takes to write and debug).

For general purpose programming work I find Python's performance is adequate. Even driving Arduino, even only limited horsepower systems like a Raspberry Pi, I've never had a speed problem with Python. If I did, that's fine, I'd use C++ where I needed to.

If you're looking at other langs then from a CS/hobbist point of view, Java is a must for android and websites, Haskell because always good to have at least 1 functional language to stretch your brain! And of course C++ or C# for PC development. Objective C (for iPhone) as well. Perhaps Javascript, very useful for websites. I would avoid PHP, it's a mess and Python/Java do websites.

I don't know if you do a lot of stuff like washing machine controllers in in ENG part of your course; I imagine you probaby use a custom realtime language for those. I think writing games is good practice there, and lots of fun. A game is a real time control system with zero lag tolerance.
 
Last edited:

Similar threads

  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 17 ·
Replies
17
Views
3K
  • · Replies 66 ·
3
Replies
66
Views
24K
  • · Replies 5 ·
Replies
5
Views
1K
  • · Replies 10 ·
Replies
10
Views
2K
Replies
16
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K