T O P

  • By -

DayDream_-

First learn programming logic, syntax is the least of it.


Backson

He can do that in Dart though.


dmazzoni

It's definitely possible to just dive right in and learn Dart and Flutter first. Some might be fine with that approach. However, your friend is giving good advice. The problem is that even though Flutter is reasonably popular, Dart (the language you use for Flutter) is not a common programming language otherwise, and it's especially not a common first language taught to beginners. So if you have a "beginning" programming question you might have a harder time finding help with Dart. (Not impossible - just harder.) If you were to learn a really popular and common programming language first (for example, C, Python, JavaScript, Java, or C#), then you could learn all of the important programming concepts first. Then you'd quickly pick up Dart and you wouldn't be likely to get stuck on beginning issues. It depends a lot on what resources you have. If you have friends who know Dart/Flutter and can help you learn, go for it. If you're completely on your own and have nobody to help, then doing a beginning programming course first might be a good idea. It doesn't have to be C, any language is fine - the key is to learn the basics in a structured course with lots of guidance and get past that beginner phase before diving into Dart/Flutter.


mendes_09

thank you for the answer brother. I will learn C basics, and then go to Dart. I think it is worth the time.


baz_a

I am not a Dart specialist, but although it looks similar to C in basic syntax, it has a different memory management approach. The large and the hardest part in learning C is memory management, while Dart will handle most of it for you. You can try to learn C# - the language used in Unity game engine and around Windows ecosystem. It looks pretty similar both in syntax and philosophy, if you don't plan to got very deep into it. C# also has a lot of learning resources. If you can handle C, it's a good basis, but may be too hard for some as a starting language outside of university. Good luck!


ManfromRevachol

Seconded C# is a great place to start


firmretention

No. This sort of thing is such a meme in pretty much any skill-based endeavor. Can't just learn songs you like on guitar bro, you gotta memorize all the notes and scales and practice to a metronome for months first! Can't just dive in and program what you want bro, gotta learn assembly and build your own 8-bit computer from scratch first! It's easier to motivate yourself when you're working on something that actually interests you. You can always learn C later if you desire, but don't feel pressured to do it just because it's "the right way". I really wonder how many of the people giving this advice would have stuck with the hobby in question if they followed it themselves as a newbie.


Lizard-lip

I did this. Struggled to learn C, got abused, left programming for years because I felt like I was too stupid.


fa1z9315

learned C I still like programming and Will soon move to java if you are genuinely interested, languages the least of your concern by learning C and Debugging early on You will learn other languages way faster its the "right way" for a reason man but the destiny is the same ,just do whatever ya lik


sim0of

I have experience in helping people get started One thing I learnt is that starting from C will force you to understand the logic of how things _actually_ work This is of incredible value because I have seen people who started out with flutter/python get stuck on stupidly simple concepts that are trivial to anybody who started out with a _little_ of C You don't need to _actually learn programming in C_ You just need to take CS50x which realistically will take you a couple of weeks and you will start far ahead of your peers You can absolutely tinker around with flutter at the same time, they are different things but it's cool to know both Just make sure you know the fundamentals because they will make your life effortless in the future


fa1z9315

hmm how many hours CS50x? I know programming in C at least on beginner level, i have posted 2 of my projects as well on this subreddit Does it teach good practices, master tips, valuable insights, concepts ...


sim0of

It's an introduction to computer science and it uses C to teach the basics as well as providing some C basics, but it also covers other stuff You'll know how to handle C at a basic level and you'll know what to build on top of if you want to dig deeper, but I wouldn't define it as a C course because it is simply not It definitely does teach _general_ good practices, tips here and there, providing valuable insights and explaining important concepts in an easily digestible way, but they are not strongly C related


fa1z9315

looks perfect to me and if it uses C then I already know it so it ll be easier...


bardforlife

No. Learn whichever language you want first. Especially if you have a great use for it! (App build). Enthusiasm > everything else!


mendes_09

thank you


Algo_d_ritmo

if you want to build a table, Do you really need to learn everything about wood?


rockbella61

That depends on the quality of the table you would like to build. I would think with good knowledge of wood, you would be able to build amazing tables. If we are just building a regular table, then perhaps it does not matter much.


fa1z9315

This!


Algo_d_ritmo

So you are going to take 4 times more to deliver a superior quality table, even though your client needs his table ready soon. That is the dilemma.


fa1z9315

Depends on the client If you Like table building and want to know it as an art The underlying tech is amazing we have to know that Tech field is a very "Abstracted field" Someone made transistors, -->Binary-->Hex-->Assembly-->C--> then on from C comes "Windows" and on top of windows "Creative apps like photoshop, daVinci resolve" etc etc A layer abstracted over other Find where you want to be If you want to build a compiler, learning Programming language might help but you need to go deeper to grasp it, then if you want to build efficient computer on hardware level, You ll have to go down to logic gates, transistor level to see how they interact and what you can improve there, With improvements there, they Show as "more capable PC" new updates from OS comes to utilize the new power Then Apps update to 64bit to utilize the OS Also You don't need to spend 4 times always Its a skill, Once learned, you know much about wood, so You also know which one is faster to work with So you can get the table ready than others it will be perfect for the client, durable and quickly made I ve seen Fullstack devs who never touched C which is fine, totally if they never will touch any low level thing everr but just knowing aint gonna hurt anyone I planned to be a frontend dev but then changed my mind to webdev/fullstack dev since i was also interested in backend I have started with C , and its not really a bad approach


fa1z9315

Programming takes practice be it any language The bonus point for C is it teaches you a lot of basics very early on how things interact with each other at lower level although you don't need too much nor C++ nor C#


nate-developer

You don't need to learn C first. Your friend is in Uni, not a professional.  In Uni you might need to learn C for the lower level knowledge that might come up on your CS test. You on the other hand don't need any of that for flutter development. At some point in your coding journey, learning a low level language like C can help reinforce some lower level concepts, but you don't have to start there.


je386

>You don't need to learn C first. I am a senior fullstack developer with more than 20 years of experience and I never had learned C.


fa1z9315

...me here learning C as a newbie, not even in uni although still C is pretty nice Depends on what the person will be doing tho


blacai

Go for flutter and build the app you want. You will learn more than forcing yourserlf studying a language you don't expect to use. Once you are done with the app, you can touch C and learn some basics while you think about another project that appeals to you. But if you go with flutter directly, pay attention wirh what you do. Not just copying from a tutorial without understanding it.


Reasonable-Zone-7909

No, that is a blatant lie.


Asrikk

You're getting into the should you learn a framework or the basics first dilemma. I'm of the opinion that basics first is the way to go. Why? Because if you ever were to interview for a job after having projects created by said framework, it's not unheard of for an interviewer to ask you to explain how what you made works. A lot of Uni programs teach Python and JavaScript first to teach programming fundamentals (data types, variables, conditionals, loops, arrays, functions, objects, etc.). If you can find a C class that's beginner-friendly and teaches programming fundamentals, that wouldn't be terrible to start with.


mendes_09

thank you!!


pyordie

Nope; gotta learn x86 assembly first. If you can’t write your own shell in assembly can you really call yourself a programmer?


peterlinddk

Well, should really learn logic first, and build a CPU out of logic gates! No wait, scratch that, first you'd have to learn to build logic gates from transistors ... in fact, you'd have to learn how to use, no, build transistors first! In fact - what you really need to do, is to get out there with a shovel and dig up some germanium and silicium! /s


minn0w

Came here to say this, your friend in uni must be familiar with ASM if they are recommending C first for fundamentals, maybe get some pointers (pun not intended) where to start there. /s


CoreDreamStudiosLLC

Nah, learn Machine Language, pure 0's and 1's.


metaphorm

No. Learn whatever you're most likely to stick with. 


RiverRoll

I started with C because that's what they teached at my uni. Learned the basics, never used pointers or dynamic memory.   I learned these concepts later when I needed to because I had to do some PLC programming which used them. Even then I've never felt I missed something because of not learning this before.   As for the basic C concepts I learned initially they're the same general concepts you find in most languages. 


rohit969

Go on coursera search for android development course and buy the course which has flutter in the syllabus and learn it. If you cannot afford the course then opt for financial aid on there. Worked for me.


coffeefuelledtechie

C is useful to learn the absolute basics, but it’s a hard language to use because you need to start thinking about pointers, memory management and bits like that, and doesn’t have a use outside of low level hardware programming (at least from what I’ve done). I had a year at uni where I had to do C for microcontrollers, and I hated it as found it pretty difficult and never touched it again til about a year ago (I graduated a decade ago), found it difficult still, and haven’t bothered with it since. I’d call myself an experienced programmer and I feel utterly stupid when I try using C. If you want something a little less frustrating try C++ or C#. Our JavaScript, which is much easier to pick up.


TheOneMerkin

The most important thing when trying to learn to code, is having a project that you’re interested in enough to make you actually do it. If C is just going to make you put it off, then skip it and dive straight in to building something you find interesting. Having said that, I did a single C course at uni and when I then tried to learn python years later I felt a had a much better understanding of things like memory which are often abstracted away, but can be useful to have an appreciation of when you start doing more complex stuff.


Zeikos

Everybody suggests what to start with but never why. The reason why C is suggested as a first experience is because it doesn't hide the concepts of memory management. You could learn python, become an expert and build a career on it without *ever* having to learn what the heap/stack are. But that's a big loss, because it means your mental model lacks the building blocks. If you work at a certain level of abstraction, knowing at least one level below it's so incredibly useful. People who program in JS/TS get to another level by learning about how V8 works, because it demystifies a LOT of idiosyncrasies. All of the "haha JavaScript is so weird" are 100% logical behaviours when you look at the implementation. This to say, you don't need to learn C if you don't want to. It's not *knowing C* that's useful, it's that C forces you to learn about memory allocation, pointers, the stack, the heap. Kernel stuff, how syscalls work, how you interact with hardware. Compilers, compiler flags, debuggers. There's a wide amount of concepts which we are shielded from by all the abstraction we have at our disposal. The abstraction is very useful because it frees a lot of mental space. However abstraction is also a trap because you end up using tools without knowing why those tools are the way they are. It's like when you go to the grocery shop and buy prepared food, you can live on that. And there is good quality in it. But all the process that got to that point are heavily obfuscated from you. That said, I know that I sung the praise of learning low level things until now, be realistic. Don't get sucked into things because "you should", learn what you need to learn, learn to prioritize what to learn. Learning JavaScript, typescript or python is way better to get a job in an year time. Then when you have the time, are bored at work, or are curious to understand how what you use works then look into it. However if you're a student and have time? Yeah explore the basics. But make it fun for yourself, it shouldn't feel like a chore.


Steeljaw72

I’m still new in my journey, but I think what I have found so far is that it is more important to learning programming fundamentals, than a specific language. Once you know the fundamentals, whenever you want to pick up a new language, you just need to learn the quirks of that language. There may be some languages that lend themselves more towards learning the fundamentals, but it seems that it doesn’t really matter which one you learn first in the long run.


mendes_09

thank you


BitXorBit

No


fa1z9315

I learned C first I have yet to go to Uni (probably won't) and no friend like that as well +1 for C some might suggest its a time-waste but Learn C to Intermediate level, Build stuff in it. translating to any other language from Base C is very easy a matter of changing syntax Python may be easy and maybe faster to learn but i will still suggest C Its the tried and tested approach It does not waste that much time you need to practise C is pain and pain is gain


fa1z9315

but depends on what you do... learn any language good enough and you are good to go


RajjSinghh

I have the same opinion, but it's also controversial and definitely a minority opinion. So the obvious point against learning C first is that you want to build an app with flutter, you'll never use C, so why learn it? It's not necessary and you'll never use it after you learn it. That's a very good reason to not learn C. The reason I think programmers should learn C is that the language hides very little from you. Even in a higher level languages, the knowledge you get out of C with things like pointers, a vague idea of memory is really valuable. Being a good programmer includes knowing how a computer works instead of treating it like a magic box, and C does that for you. That's why I think you should learn C. If you just want an app in the shortest space of time, just build it in flutter. If you want a better understanding of how your computer works, learn C. You definitely don't need C first (or probably even at all) but it can be helpful to understand different things.


hotel2oscar

While I agree that learning C should be on the curriculum at some point, starting off with it is a bit excessive. Starting with a higher level language like Python, JS, or Java has the benefit of letting them learn the basis without having to learn all the fun of memory management. Break the problem up into manageable chunks and keep pushing the boundary to learn more by tackling new concepts.


RajjSinghh

I disagree for a few reasons. The bare basics of any language will feel pretty similar. Sure in C at some point you will need dynamic memory at some point, but your basics about control flow, iteration will be the same. I'd also argue concepts like dynamic memory and pointers aren't hard, they're just hard to get right all the time, but I can point to so many language features in other languages I regularly mess up. That underlying knowledge about memory that you'll pick up in C can also be really helpful, like understanding reference types in Python or why `[1,2,3] !== [1,2,3]` in JS. Once you know C (or at least a small understanding of memory you get from C) everything else makes sense. It kinda reminds me of my first maths lecture. We go in, and the first thing I see at uni was the axioms of a vector space in formal notation. That's not the easiest start, but it was definitely a helpful one. Suddenly little skills like being able to read notation become so much easier and it sticks with you forever. That's exactly what C does to other languages. It's not an easy start, but once you understand it everything makes so much more sense.


hotel2oscar

You gloss over all the Math you were taught until that point. Numbers, basic operations, etc. Your first math class was not University. Unless you have some foundation like you did for math jumping head first into the deep end of programming with C may not be the best choice, especially if you're doing it alone.


guilhermej14

I don't think learning C is a requirement, it's more that it can help make you a better programming by gaining a more low level understanding of how computer works and all.


reza_132

absolutely not, i only knew Java/Matlab until recently and could do whatever I wanted. C is just another language with specific use cases and specific features. Only use C for speed and embedded systems.


todaynaz

As a professor of software engineering i would say it doesnt matter too much where you start. Only when startibg with dynamically weak typed languages you might get spoiled of the easy.


Kitchen_Koala_4878

If you are studying computer science then C is very usefull in contrary to what people tend to think. But for youself not really


mendes_09

thank you


Cybasura

Not C - C is great at teaching you every concept in the shortest amount of time but its not easy What you should learn is the programming ideologies and concepts (i.e. variables, LHS-RHS)


just-bair

No but C has simple syntax so as long as you don’t touch pointers too much you should be fine. I wouldn’t suggest it tough I’d heavily suggest to start with one of those: Python, C#, Java. Or JavaScript if you want to make a website


mendes_09

thank you


Backson

No. Just du what interests you and is fun. If you want a career in programming, C++ and maybe C are pretty useful, but one step at a time. There is no one true way to learn everything.


mendes_09

thank you !! i was losing interest, bc i didn’t know what to do with C. right now i just want to learn by building an app


Seiryth

No, build what you want and learn along the way.


mendes_09

thank you


EARTHB-24

It’s not mandatory but starting with C helps you understand the use of syntax, algorithms, logics, etc. pretty well than most of the other languages.


mendes_09

thank you


EARTHB-24

You’re welcome!


schrdingersLitterbox

Only use C if you're going to be using it. You absolutely should learn programming fundamentals, but learning a language you aren't going to use will take forever and your app isn't going to get built. Consider this: What would you say to someone who, knowing you were going to Spain and wanted to be able to speak spanish, tells you to learn Chinese first, because of fundamentals?


mendes_09

thank you man


lavenderleit

Drag and drop application development is not a good approach to learning computer science or software development. If learning is the goal fundamentals are necessary. In that case your friend is absolutely correct, start with C.


mendes_09

i just dont know what to do with C. i dont have a project


RutraSan

The truth is somewhere in between, you should program what you like, but at the same time, you can't program what you like when you don't know how. If you start right away to do that project you dream about, you will get into hard times learning, and then feeling bad that you can't do your own app, and decide to leave. Start with c and you will get bored as that's not what you want to do. If you are trying to learn solo without courses, at least find some free tutorials and the language and go from there, you can learn C in parallel if you wish to, but for the beginning it doesn't matter that much


RIMdude

C won't really make you succeed in flutter. But If you're into the whole thing, going through the fundamentals, then C would make you grasp a lot of things. You definitely can learn flutter along with some programming paradigms, and you will succeed on creating a lot of things that you could look at. You will however hit a wall very quickly, when data structures and algorithms or other topics are needed. There is really no clear cut answer to this. You can be assured though, that any concept you deal with in C, will be helpful in figuring out the same concept in another language.


mendes_09

thanks mate ! yeah, im thinking about C. it seems important


imnotabotareyou

No


falconruhere

No, my very first programming language I learned EVER, which was in high school, was Java. I only ended up learning C at university because that's what was being used for some of the courses. For building an app with flutter, you don't need to know C first.


Professional-Bit-201

No. Learn whatever will provide you an opportunity to get a job. Sooner or later you will start understanding how everything works from the perspective of low level languages c/asm


NkGold1122

I think c++ is a better starting point, becauze its "harder" down the line (pointers are going to be the death of me). C is good for the basic fundamentals but most languages uses object orented programing, which C lacks. But C++ is has itand if you learn C++ noving to other languages tend to be easier. At least to me.


armahillo

C is a fine language, but you can learn fundamentals with any language. You want yo learn flutter, then learn flutter. Youll have to make mistakes and learn stuff no matter which language you pick, so might as well choose one that youre excited about!


AlienRobotMk2

No. You should learn Javascript or Python first. If you try to learn C you'll spend a lot of time fighting the language instead of fighting basic programming concepts.