|
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. |
On May 12 2014 03:22 Invictus wrote: Wow holy crap thanks for the huge amounts of advice, i'll slowly work my way through everything each of you said!
I guess I have a long way to go before I can start to comprehend at least abit of what you guys are saying. Thanks for the help again!
No worries. Just don't rush it. Start doing the "Python the Hard Way" course at a pace that suits you (including the required setup mentioned in the preface there). When you get further along and feel like programming is something you might want to do, I suggest you continue with the course while getting additional resources. Some of those would be books that speak about coding in general and are not tied to a specific language:
Elements of Programming Style - free book in .pdf format. It's over 30 years old but 99% of what is said there is appliable even today. It'll also teach you some Fortran and PL/I because that's what's used in the examples there. What's interesting about this book is that each "bad code" example was taken out of actual coding source books and courses.
Clean Code - "The only valid measurement of code quality: WTFs/minute." This book will show you some really good practices when writing code.
Code Complete - About good coding practices, general software design etc. When you're more experienced this will improve not just the quality of your code but your productivity as well (since it's much easier and faster to write software that was designed properly - good design at start can save you months down the line).
|
On May 12 2014 02:55 phar wrote:10 minutes is a damn short time to present anything, that's going to disappear more quickly than you would imagine. You're going to have to keep it pretty short. I would discuss: - Describe problem you're trying to solve
- Rough outline of your design
- Other solutions considered, and why they were thrown out
- Maybe a very short amount of time describing some interesting detail you'd like to show off
- Wrap up with things that went well, and things that did not go well which you would do differently next time
But I really don't know man. I have no idea what they're looking for, I've never had to give a presentation for an interview, so I'm really just basing that off of presentations I have to give while employed. So it could well be that my presentation experience is completely different from what you need as an interviewee. I tried to make it more interview appropriate, but I probably failed :p.
Good points, the key is to show code too. Thanks for ideas!
|
On May 11 2014 16:35 sluggaslamoo wrote: If you actually "knew all of that crap" you simply wouldn't be using Windows, because using Windows for programming is like trying to code while stabbing yourself in the face repeatedly.
Linux can do everything Windows can do, Windows can't do everything Linux can do.
Visual Studio is straight up superior to MonoDevelop, and Linux doesn't do Visual Studio, so, yeah, if you're using C#/.NET, then coding it on Windows is more pleasant.
But no true Linux fanboy would use those technologies in the first place, so carry on.
|
On May 12 2014 04:10 Manit0u wrote:Clean Code - "The only valid measurement of code quality: WTFs/minute." This book will show you some really good practices when writing code. This is funny. I got to the first code sample:
public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; } And they claim that the logic is fine, indentation is fine, and the code is unreadable because the variable names don't reveal their intent. To me it seems that the language is more of a problem than anything else.
In Haskell it would be something like:
getThem = filter (\x -> head x == 4) Seems pretty readable, even with names that "reveal nothing."
(I'm not saying that the book is bad, or that using cryptic names is the way to go, or that you should never use Java. It's just something that came to my mind when looking at that piece of code.)
|
Yea to be fair, they're talking just about instances where you have to name things. Even in Java you don't have to name stuff there:
return Lists.filter(originalList, someFilterFunction);
Gets cleaner in Java 8 when someFilterFunction doesn't have to be an anoymous com.google.common.base.Predicate too. But that wasn't the point of the section.
The point about clear naming still stands. Even if you develop in Haskell, when you have a really large project with like 50+ engineers, you need to use proper naming or nobody will be able to maintain your code.
As an aside, I do wish there were more options for large scale functional programming. It'd be a lot more fun.
|
On May 12 2014 08:25 phar wrote: As an aside, I do wish there were more options for large scale functional programming. It'd be a lot more fun.
Scala is pretty fun, and the Typesafe stack makes it really good for large scale.
But i wouldn't put Scala on the same level as Haskell.
|
Sorry I mean... there aren't a lot of employment opportunities on large products that are built using functional languages. Not that the languages themselves aren't capable of it.
|
On May 12 2014 06:54 delHospital wrote:Show nested quote +On May 12 2014 04:10 Manit0u wrote:Clean Code - "The only valid measurement of code quality: WTFs/minute." This book will show you some really good practices when writing code. This is funny. I got to the first code sample: public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }And they claim that the logic is fine, indentation is fine, and the code is unreadable because the variable names don't reveal their intent. To me it seems that the language is more of a problem than anything else. In Haskell it would be something like: getThem = filter (\x -> head x == 4) Seems pretty readable, even with names that "reveal nothing." (I'm not saying that the book is bad, or that using cryptic names is the way to go, or that you should never use Java. It's just something that came to my mind when looking at that piece of code.)
I meant this book as a general guideline, not Java-specific. There are some good practices to be learned there. And Haskell code tells me nothing
|
If anything, Python looks like terrible abomination to syntax. I haven't learned or used the language, but not seeing braces is annoying. I find Java, Objective-C and C-family syntax much better.
|
On May 12 2014 06:50 Mindcrime wrote:Show nested quote +On May 11 2014 16:35 sluggaslamoo wrote: If you actually "knew all of that crap" you simply wouldn't be using Windows, because using Windows for programming is like trying to code while stabbing yourself in the face repeatedly.
Linux can do everything Windows can do, Windows can't do everything Linux can do. Visual Studio is straight up superior to MonoDevelop, and Linux doesn't do Visual Studio, so, yeah, if you're using C#/.NET, then coding it on Windows is more pleasant. But no true Linux fanboy would use those technologies in the first place, so carry on.
Exactly, why would I ever want to use an IDE in the first place? My window manager is better than any IDE I could ever want.
If coding on Windows is more pleasant because of VS, then that says something about Windows and C#, not that Linux is worse. VS is slow and cumbersome, its refactoring features are not necessary and do not speed up productivity, it just gives you the illusion that it does and makes you think you need it. VS just does a spectacular job of hiding C#'s problems.
There are a lot of productivity woes that you don't notice simply because you are stuck in a certain way of thinking. You lose a lot of time having to open up new windows for downloads, taking your hands off the keyboard and having to use your mouse, and having to search for files. Imagine if you simply just did not have to do any of those things.
How many files do you work on at once? imagine if all the files you needed to work on could be open at the same time in an instant and in order to see and work on one of those files would take a fraction of a second. No more project explorer, because your workspaces are your project explorer and each file is neatly compartmentalised on the screen with a simple algorithm. Imagine if your workspace could shift and morph on the go with just a few keybind combinations.
Imagine if your hands never had to leave the keyboard to do any tasks. Imagine if it didn't matter if you had more than one monitor, you could still work as if you were multi-monitor even on a single workspace, because your monitor can divide its real estate using an algorithm.
Because of things like this, I can boot up multiple environments at once and work on many different projects at once, and context switching is as simple as switching to a new workspace. Each workspace taking a second to setup.
Now when most people think of this, they think all sorts of weird shit and think its overly complicated, but its actually quite simple, it just doesn't make any sense in Windows land because Windows has trapped your brain into thinking that things can only work a certain way.
|
Umm... not really. I develop a good amount on Visual Studio running a heavily customized version of Dexpot... your shit isn't overly complicated at all. Everything you've described is actually pretty normal for me - you seem to be over-estimating your abilities just a tad...
VS is really fast since I've moved over to an SSD. Only the build times take any real amount of time. Since I've had Resharper installed I don't really leave the keyboard much unless I forget about a hotkey (VS and RS have their own set and switching between the environments messes that up a lot).
But yeah go on...
On May 12 2014 10:55 darkness wrote: If anything, Python looks like terrible abomination to syntax. I haven't learned or used the language, but not seeing braces is annoying. I find Java, Objective-C and C-family syntax much better.
I love Python syntax because it's so refreshing to have things so clean and verbose, albeit less rigidly structured. Just hope you don't work with someone who uses 2-space tabs vs 4-space tabs vs tab-tabs... Objective-C syntax is wonderful, but I find that sometimes there's just too many brackets. Java and C/C++/C# just feel normal because I'm used to them. I think it's like that for everyone who switches over and realizes they do a majority of work in that kind of language, and it's not a thing where they're "superior" per say...
I feel for Haskell and Perl programmers though...
|
[quote
On May 12 2014 13:23 sluggaslamoo wrote: Exactly, why would I ever want to use an IDE in the first place? My window manager is better than any IDE I could ever want.
For one thing, coding a GUI by hand is a waste of time. But, hey, if you only write terminal and web apps...
also, I'm typing this in lynx in herbstluftwm. get on my level
|
On May 12 2014 14:59 Mindcrime wrote:[quote Show nested quote +On May 12 2014 13:23 sluggaslamoo wrote: Exactly, why would I ever want to use an IDE in the first place? My window manager is better than any IDE I could ever want. For one thing, coding a GUI by hand is a waste of time. But, hey, if you only write terminal and web apps... also, I'm typing this in lynx in herbstluftwm. get on my level
To me that seems like just an issue of using the wrong technology. Would you write a webapp in C++?
When you can code a perfectly good desktop/mobile app in a popular scripting language and JS/HTML/CSS why wouldn't you?
http://www.appcelerator.com/
Also XMonad > herbstluftwm - Superior Haskell master race.
|
On May 12 2014 14:49 Blisse wrote: Umm... not really. I develop a good amount on Visual Studio running a heavily customized version of Dexpot... your shit isn't overly complicated at all. Everything you've described is actually pretty normal for me - you seem to be over-estimating your abilities just a tad...
VS is really fast since I've moved over to an SSD. Only the build times take any real amount of time. Since I've had Resharper installed I don't really leave the keyboard much unless I forget about a hotkey (VS and RS have their own set and switching between the environments messes that up a lot).
But yeah go on...
But... why?
Isn't the fact that you need an SSD for VS to go really fast, and builds taking time any indication that what you are doing is already inefficient?
This is what I'm talking about, two different worlds. You need VS because of the pitfalls of C#. So comparing VS and Mono makes no sense to me, because I just wouldn't use C#. I wouldn't have to deal with build times in the first place for a start. The fact that you need Resharper, again, I just wouldn't need it, it wouldn't be of help to me.
If Dexpot was anything as close to as good as using a decent tiling window manager in Linux I would use it... everything I've described, its not that its normal for you, its that you actually just don't understand what it is. When I say my hands don't leave the keyboard, I actually mean it. You have a start button, you have project explorers, you have to open files, you have to use your mouse for lots of things.
Nothing I say makes sense in your current frame of reference, what I'm doing is not possible in Windows and the fact that you think you are doing anything remotely similar means you don't know what I'm talking about.
|
lol there's no real discussion if your only argument against anything i say is that i dont understand your world... what kind of logic courses did you take, because all you've done here is assume your premises and argue everything from that...
here's an example: the fact that you even need a tiling manager means you're already losing - i don't need it, it's no use to me, i have other tools that do it better. if your thing was better even though i've never used it, i would be using it. but i'm not using it so clearly it's inferior to mine.
|
On May 12 2014 15:54 sluggaslamoo wrote:Show nested quote +On May 12 2014 14:49 Blisse wrote: Umm... not really. I develop a good amount on Visual Studio running a heavily customized version of Dexpot... your shit isn't overly complicated at all. Everything you've described is actually pretty normal for me - you seem to be over-estimating your abilities just a tad...
VS is really fast since I've moved over to an SSD. Only the build times take any real amount of time. Since I've had Resharper installed I don't really leave the keyboard much unless I forget about a hotkey (VS and RS have their own set and switching between the environments messes that up a lot).
But yeah go on... But... why? Isn't the fact that you need an SSD for VS to go really fast, and builds taking time any indication that what you are doing is already inefficient? This is what I'm talking about, two different worlds. You need VS because of the pitfalls of C#. So comparing VS and Mono makes no sense to me, because I just wouldn't use C#. I wouldn't have to deal with build times in the first place for a start. The fact that you need Resharper, again, I just wouldn't need it, it wouldn't be of help to me. If Dexpot was anything as close to as good as using a decent tiling window manager in Linux I would use it... everything I've described, its not that its normal for you, its that you actually just don't understand what it is. When I say my hands don't leave the keyboard, I actually mean it. You have a start button, you have project explorers, you have to open files, you have to use your mouse for lots of things. Nothing I say makes sense in your current frame of reference, what I'm doing is not possible in Windows and the fact that you think you are doing anything remotely similar means you don't know what I'm talking about. VS runs fast even without SSD, but you need a good setup. I do not need VS because of pitfalls of C#, I can utilize VS thanks to the strengths of C# (or any statically typed language), dynamic language would be much more useless for that. Build times in C# are irrelevant if you have at least somewhat reasonably structured project.
I never use start button, I nearly never use project explorer, yes I have to open files, so do you, unless you store everything in memory and never turn off your machine. If you mean manually open files, I think you did not work in VS for a long time. Frankly you are just proselytizing your one true religion and are just like any other religious fundamentalist - simply wrong.
|
Wow gotta love it when the linux boys come crawling out the woodwork.
Linux is great, no doubt but it should be a telltale sign when someone says 'my hands never leave the keyboard' that you're dealing with a monstrous learning curve so to the guy who originally asked about it for starting CS my honest answer is like many others, learn python and stick with Windows for now, sure you can dual boot and check out Linux but you should check out Linux when your goal is to check out Linux, not when your goal is to get a basic feel for some of the fundamentals of programming.
Learn some basic python first, play around with scripts and do some basic output text debugging (put strings in saying whats happening with your code). Once you've got the hang of this I would highly recommend grabbing Visual Studio Express for Windows Desktop. Arguments about OS's aside I honestly can't see you going through a CS degree without touching Visual Studio and right now isn't the time to decide which platforms you want to work with - get to know the tools during your course and then decide what you like.
Once you have that pick up Python Tools for Visual Studio as this will allow you to firstly learn the basics of VS (as I've said chances are you will do anyway) but also it will introduce you to interactive debugging in a nice friendly way. Bring in one of your python scripts and hit F10 and you'll be stepping through your code with no additional requirements.
The reason for all of this is simple, you don't want to be distracting yourself from your original goal, I'm sure plenty of guys will recommend checking out linux and emacs and all manner of fancy things, but it would be like learning to solve a rubix cube whilst learning to swim, you'll drown and give up. You're familiar with Windows so start there, learn some python, then bring that to VS to learn a bit about IDE's. Then go check out Linux, learn the command line and how that business works and maybe pick up something else and try your hand at Java or some other language on Linux and compare the differences but make sure you keep your goals clear and concise, you yourself should understand the rough steps of how to achieve it so if people are making recommendations you don't understand, put them to one side until such time as you can tackle them later as you could spend years going down rabbit holes that lead you nowhere relevant to your original aim which is simply to prepare for a CS course where you'll learn how to do half of these things in a structured way anyway.
What I've said will teach you the basics of a nice language to start with as well as the basics of a very commonly used IDE and how to step through and debug code, the latter being the most important thing you will ever learn in programming. As a physics grad who became a software engineer, learning how to properly debug my code was the biggest eye opener of all as it takes much of the guesswork out of the equation, you see exactly what your code is doing and if you start with VS then learn how to debug properly in Eclipse and whatever IDE for whatever language after you will quickly find yourself ahead of the class and dealing with problems far easier.
|
A good thing to note is that when first learning programming you should pay special attention to boolean logic and control flow as those elements feature in every single programming language and are the basis for doing anything.
And a note to "Haskell master race" guys: Common Lisp is where it's at and you know it
|
|
|
On May 13 2014 07:02 Nesserev wrote:Show nested quote +On May 12 2014 21:55 adwodon wrote: Arguments about OS's aside I honestly can't see you going through a CS degree without touching Visual Studio ... Haha, whut? This made me laugh so hard, never touched VS in my life...
Well that comment made me laugh, that you think you must be such a well rounded developer who CS grads should aspire to, but you've never touched probably the most widely used IDE in mainstream industry. A CS course which doesn't give its graduates proper scope for industry is a bad course so just because you'd perhaps discovered your niche early and it didn't require VS then that's great for you but the majority of graduates aren't in that position and crippling them in industry by not allowing them good experience with a very popular IDE is just daft, you have a 3 year course which is more than enough time to give students experience with a wide range of tools and considering VS is free I see absolutely no reason to withhold that from them, they have time to spend a thousand hours learning emacs commands too, they can't still choose the righteous path of Unix, don't worry, your beliefs are safe.
It's nice that you're so narrow minded and find these things funny but a sad reflection on the mindset of many developers that they believe in hobbling the potential for individuals by limiting their experience and therefore their choice because of their own dogmas. A good course should teach graduates a range of things and prepare them for industry as that's where most of them will end up, there's already a worrying trend of graduates coming out with only Java experience and completely faceplanting at standard industry positions because they have a poor grasp of anything outside of this, making niche graduates is bad for everyone, giving them a little bit of a wide gamut of knowledge is far better than a narrow but in depth slice of the whole pie and its why companies like mine don't hire CS grads, despite being a software and hardware company, since most grads have no understanding of the hardware these days they make poor developers for anything that requires understanding of the hardware and its much easier to teach a physicist or electrical engineer to write good software (at least in UK, maybe other countries have better CS courses).
|
|
|
|
|
|