|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
hmm, I was thinking to myself if we from TL would be able to make a game 
I think we have plenty of programmers here, so I believe skills would not be a problem. Of course it would not be easy too because of the problems like spare time and the management of the entire project, setting to each person a determined task and so on.
The first project could be a very simple game that someone could make by himself, but if we distribute tasks we could test and train the management of this kind of cooperative programming.
Well, it was just an idea I had few moments back and wanted to share here :D
|
After the summer i will start my 2nd year as a programmer :D
|
On July 19 2010 05:08 fabiano wrote: The first project could be a very simple game that someone could make by himself, but if we distribute tasks we could test and train the management of this kind of cooperative programming.
Not a Fred Brooks fan, are you?
|
On July 19 2010 05:08 fabiano wrote:hmm, I was thinking to myself if we from TL would be able to make a game  I think we have plenty of programmers here, so I believe skills would not be a problem. Of course it would not be easy too because of the problems like spare time and the management of the entire project, setting to each person a determined task and so on. The first project could be a very simple game that someone could make by himself, but if we distribute tasks we could test and train the management of this kind of cooperative programming. Well, it was just an idea I had few moments back and wanted to share here :D
If we wanted to collaborate of something, we'd need one project manager to sew the pieces together, and to plan/determine what we need (or a board of people w/e). Then let whoever wants to program the different patches, and if the project manager likes the code he'll sew it into the carpet that will be our program. We can't assign someone a task and expect them to complete it, I have a feeling nothing would get done then.
|
On July 19 2010 04:38 ParasitJonte wrote:Show nested quote +On July 17 2010 08:05 Adeny wrote:Good evening. So, I'm on a quest to learn .NET (C# specifically, maybe some of the basics for ASP if time permits) within say a year's time. I've played around with it, done some project Euler tasks and so on, so I'm fairly comfy with the syntax and the basics. Thus, my question is; What now? What do I need to be familiar with to be a competent coder, and to work in a professional environment. I'm going to make it a habit to write very clear, readable, well-commented code, but what I'm looking for is which areas of the languages do I need to be most familiar with? Please rate in order of importance what I need to know, so I can better delegate my time. Also, I love this thread, it's my replacement for the NSFW pics thread.  Some different things relating to C# and Microsoft technologies that pop up in my head: - Check out WPF and Silverlight while you're at it -> learn XAML and the Model-View-View-Model design pattern (google it; similar to Model-View-Controller). - Take a look at the Entity Framework. - Take a, long, look at LINQ. If you're coming from a Java background, you'll probably see LINQ as the most compelling reason to program in C# instead.
Java has a lot of LINQ like frameworks as well. Although there's no standard right now, so I guess its not integrated as elegantly as LINQ. 
Like other's have said, usually its best to make sure you understand the paradigm fully, before you try to learn the neat tricks unique to the language. Just like with anything, its important to get the foundations right, paradigms teach you the right way of thinking so you can write code very efficiently.
You'd be surprised how many programmers don't really know it very well and take forever to program anything and still write bad code. It will not only help you write better cleaner code, you will also write it faster. I would even recommend learning not only the paradigm of the language, but paradigms that precede the paradigm you are learning before.
So for example learning the structured programming paradigm, before the object oriented programming paradigm. This is because there are several elements in OOP that are taken from structured programming (and aren't explained in OOP) and would help you immensely in understanding OOP.
So in the case of C, first of all learning the process of sequence, selection, repetition. Work towards understanding how to properly go about functional decomposition. Then you can work towards ADTs (Abstract Data-Types) and the type of thinking required to go about them.
When I started studying OOP, I went through at least 10 big fat books on it . Some of them were language based like C++, others were purely based on the academic part (even philosophy) of OOP, and others were subsets of OOP such as Responsibility Driven Design. Not saying that it is the necessary amount, but I gauge that, that is the amount necessary to gain a good understanding of OOP. Also then it doesn't matter which books you read, because you will get many different takes on it, you will be able to spot what's wrong and right, and some things will be easier to understand in some books than others.
Here's a short quiz I created myself for my own study, and might help you figure out the kind of questions you need to answer if you are studying it. (Remember that a paradigm is really just a way of thinking, and just knowing the answers I give you won't help you at all, you should try to figure these out on your quest to become a better programmer )
I've done this quiz with quite a few people, and the good programmers always manage to give answers to 95-100% of the questions. Note that some questions will appear really vague if you do not fully understand the paradigm, the questions and answers to them are quite simple once you know them. However take it as something just for fun, to perhaps help you gauge where you are at, rather than an actual study reference. Also note that it says "my answers", sometimes there are multiple ways of answering the same question, it depends on your perspective, so I gave multiple answers where possible.
Questions + Show Spoiler +Structured Programming
1. What is functional decomposition?
2. Name 2 major forms of abstraction
3. What is an expression?
4. Name 3 different programming paradigms
5. What is the main difference between structured and procedural programming?
6. What is Control Flow?
7. What is a Side-Effect?
Object Oriented Specific
1. Briefly describe the thought process required in OOP.
2. Name the 4 core principles of OOP.
3. How can Generalisation be an abstraction?
4. What OOP concept can used to Generalise objects?
5. Name 2 forms of polymorphism.
6. Name 3 things an object can do.
7. Name 3 different design patterns.
8. What is a classification and how does it relate to programming?
My Answers + Show Spoiler +Structured Programming
1. What is functional decomposition? One of the fundamentals of programming where problems are broken down into their simplest form and one tries to find ways or methods of dealing with each small problem one step at a time. When these problems are solved, one can re-use these methods to handle an even bigger problem.
2. Name 2 major forms of abstraction Functional abstraction Data abstraction
3. What is an expression? An expression is any unit of code that when combined will reveal itself in the form of a value.
4. Name 3 different programming paradigms [Most obvious ones] Procedural Object-Oriented Functional (There are at least 100 more)
5. What is the main difference between structured and procedural programming? Structured programming abolishes the use of the 'goto' statement that altered the step-by-step process of going through code, as well as only having a single point of entry and exit in a subroutine. A programmer now would only have to think in terms of 'sequence', 'selection', 'repetition' without having to even consider an unsuspecting jump, exit, or entry point in the code, allowing programmers to make better assumptions about someone else's code or even their own code.
6. What is Control Flow? Used to refer to the order in which statements are called.
7. What is a Side-Effect? When an interaction with a piece of data affects the behaviour of other operations which rely upon it.
Object Oriented Programming
1. Briefly describe the thought process required in OOP We must see our program in terms of objects and the role they play in a particular problem domain.
2. Name the 4 core principles of OOP. Abstraction (or Classification) Encapsulation Inheritance Polymorphism
3. How can Generalisation be an abstraction? An object can be referred to and grouped as a part of a family of related concepts or roles.
4. What OOP concept can used to Generalise objects? Inheritance
5. Name 2 forms of polymorphism. Universal Parametric Inclusion Subtyping Ad-Hoc Coercion Overloading
6. Name 3 things an object can do. Do things (methods) Know things (fields) Collaborate Perform services Perform operations Many others
7. Name 3 different design patterns. Double Dispatch Composite Factory (Atleast 100 to choose from)
8. What is a classification and how does it relate to OOP? Classification refers to the category or taxonomy of an object. The idea of object classification is to organise elements or concepts into particular groups, roles, responsibilities, etc. In programming this is called a class, we can use classes to represent these elements as code.
|
Insane post, thanks a lot! Guess I better start attacking some OOP/C# books.
|
On July 19 2010 10:50 sluggaslamoo wrote:Java has a lot of LINQ like frameworks as well. Although there's no standard right now, so I guess its not integrated as elegantly as LINQ. 
It's true, but the lack of anonymous functions in Java makes it extremely painful to program in any kind of vaguely functional style -- if you try, you have to make anonymous classes to serve as functors for everything, and it's really ugly. So the functional features of C# are quite likely to be the biggest weak point for anyone coming to C# totally from Java.
This post and the few before it on Joe Marshall's blog are a good example of the hurdles you have to jump through to write functional Java (note the funny comparison between the C# and Java solution here: )
http://funcall.blogspot.com/2010/06/buoyancy.html
EDIT: Oh yeah, and this one too. Joe is not a big fan of Java. I share his frustration.
http://funcall.blogspot.com/2010/05/i-have-two-collections-and-i-need-to.html
|
United States2822 Posts
In C++, is there any difference between && and & / || and | for logical operators besides the fact that && and || do short-circuit evaluation?
|
If you're only applying them to bools, or 0/1, then they should act identically, minus the short-circuiting.
It would be sort of weird to see code that was using the bitwise versions for boolean algebra, though.
|
|
I don't even like python, but I'm going to watch that just because of his shirt.
"You go to war with the army you have, not the army you wish you had." - Johnathan Ellis
That's totally from starcraft, in relation to what unit composition to aim for. (I.E. You can't tech for carriers because they would be good to have right now.
|
Hahaha that guy is a hilarious. Mad props to this guy.
|
Hey guys. I have an ee degree and have familiarity w/ C/Java/Assembly/logic programming. I haven't really done much programming in a few years tho. I've been thinking about making aps for the android. Do you guys have any suggestions on languages/tools?
|
On July 20 2010 01:39 scintilliaSD wrote: In C++, is there any difference between && and & / || and | for logical operators besides the fact that && and || do short-circuit evaluation? && and || operate on the values as a whole ("0" or "not 0") and return a bool, while & and | operate on the bits of the values and return a value of the same type as the input (if they aren't of equal types: some larger type, or whatever is appropriate).
|
On July 20 2010 23:43 Maynard wrote: Hey guys. I have an ee degree and have familiarity w/ C/Java/Assembly/logic programming. I haven't really done much programming in a few years tho. I've been thinking about making aps for the android. Do you guys have any suggestions on languages/tools?
I thought all development for Android apps is done in Java language, with their own libraries.
|
On July 19 2010 10:50 sluggaslamoo wrote:Show nested quote +On July 19 2010 04:38 ParasitJonte wrote:On July 17 2010 08:05 Adeny wrote:Good evening. So, I'm on a quest to learn .NET (C# specifically, maybe some of the basics for ASP if time permits) within say a year's time. I've played around with it, done some project Euler tasks and so on, so I'm fairly comfy with the syntax and the basics. Thus, my question is; What now? What do I need to be familiar with to be a competent coder, and to work in a professional environment. I'm going to make it a habit to write very clear, readable, well-commented code, but what I'm looking for is which areas of the languages do I need to be most familiar with? Please rate in order of importance what I need to know, so I can better delegate my time. Also, I love this thread, it's my replacement for the NSFW pics thread.  Some different things relating to C# and Microsoft technologies that pop up in my head: - Check out WPF and Silverlight while you're at it -> learn XAML and the Model-View-View-Model design pattern (google it; similar to Model-View-Controller). - Take a look at the Entity Framework. - Take a, long, look at LINQ. If you're coming from a Java background, you'll probably see LINQ as the most compelling reason to program in C# instead. Java has a lot of LINQ like frameworks as well. Although there's no standard right now, so I guess its not integrated as elegantly as LINQ.  Like other's have said, usually its best to make sure you understand the paradigm fully, before you try to learn the neat tricks unique to the language. Just like with anything, its important to get the foundations right, paradigms teach you the right way of thinking so you can write code very efficiently.
Yeah, I've seen some of them. But in all honesty, they all seemed to suck =p.
Anyway; in my post I assumed an educational background in computer science; that's why I wrote about things specific to C#/Microsoft.
|
Zurich15310 Posts
On July 21 2010 00:09 Cambium wrote:Show nested quote +On July 20 2010 23:43 Maynard wrote: Hey guys. I have an ee degree and have familiarity w/ C/Java/Assembly/logic programming. I haven't really done much programming in a few years tho. I've been thinking about making aps for the android. Do you guys have any suggestions on languages/tools? I thought all development for Android apps is done in Java language, with their own libraries. Yes, Android apps are written in Java source. You can use most standard JDK libraries and of course the Android SDK libs as well.
The Android compiler makes dalvik intermediate code off the Java source which is incompatible with Java virtual machines though and will only run on Android OS.
http://www.android.com/ has everything you need.
|
On July 21 2010 00:16 zatic wrote:Show nested quote +On July 21 2010 00:09 Cambium wrote:On July 20 2010 23:43 Maynard wrote: Hey guys. I have an ee degree and have familiarity w/ C/Java/Assembly/logic programming. I haven't really done much programming in a few years tho. I've been thinking about making aps for the android. Do you guys have any suggestions on languages/tools? I thought all development for Android apps is done in Java language, with their own libraries. Yes, Android apps are written in Java source. You can use most standard JDK libraries and of course the Android SDK libs as well. The Android compiler makes dalvik intermediate code off the Java source which is incompatible with Java virtual machines though and will only run on Android OS. http://www.android.com/ has everything you need.
Oh that's cool, I didn't know they had most of the Java SE libraries.
|
Wait what, MSVS 2010 only has a 90 day trial? Then I'm going to have to purchase it for $800? Yeah I don't think so, why's it not free like 2008? 
Edit: By the way, someone on another forum made me think about how to optimize a problem similar to Project Euler 1, Find the sum of all the multiples of 3 or 5 below 1000.
This is what I came up with, which gives the right answer (so spoiler alert, i guess), however there's a different problem. It states that it executes in 0 milliseconds, so is there any way to get more precision when measuring execution time? Not that it's something I'll need often, but still.
+ Show Spoiler + static void Main(string[] args) { DateTime startTime = DateTime.Now; uint[] numbers = { 3, 2, 1, 3, 1, 2, 3 }; uint counter = 3; uint counter2 = 1; uint sum = 0; while (counter < 1000) { sum += counter; counter += numbers[counter2++]; if (counter2 > 6) counter2 = 0; } TimeSpan elapsed = DateTime.Now - startTime; Console.Out.WriteLine(); Console.Out.WriteLine(sum); Console.Out.WriteLine("IN: {0}", elapsed.TotalMilliseconds); Console.In.ReadLine(); }
|
|
|
|
|