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 February 17 2015 00:36 pedrlz wrote: So I decided to start learning a programming language (again!). I decided that clojure doesn't have much material for starters and I get a little lost after doing the most tutorials that I found so I decided to change for python because it seems the most similar language from the mainstream (I might just be completely wrong, don't be too harsh with me pls).
I wanted a book to study instead of using web tutorials since I usually like to lie on my bed and read something before sleep. What books do you recommend for python? Think Python is good enough? Should I try others? Thanks.
Clojure is probably super different from normal mainstream stuff. Data is "immutable" by default, meaning it can't be changed after it's created, and people seem to try to keep that up as much as possible. They write "purely functional" code as much as they can.
In normal imperative thinking, you write code where you take a reference to data, then you run over the data and do the required changes.
In a functional style, your functions only look at the input data and do not touch it, the required changes only show up in the result of the function.
This should need help from the programming language itself or performance will be shit. If the compiler/interpreter knows that the things you work with are always immutable, it might be able to do something smart instead of making copies of everything all the time.
I struggle with the stuff and can't come up with good examples that shows that it's an interesting idea (I'm just a noob trying to learn enough Haskell that I can do something actually useful with it). Working like this is pretty mind blowing in practice coming from a "normal" imperative background, so that's fun. For some reason, complicated ideas end up as super compact code compared to the usual imperative code. When you do changes to your code, you can kind of look at the code as if it's some sort of math/logic proof, and you can then often be very confident that something is still correct after your changes, and then it actually is correct and bug-free. I guess that's the big upside.
Clojure then also is some sort of Lisp and can do Lisp stuff. I guess the big deal with that is "meta-programming"? Here's stuff to promote Lisp:
I have no idea what other language with similar ideas to suggest with regards to a good, easy introduction. It's all very hard for me.
Were those even the reasons you started looking at Clojure?
I started with clojure because whenever I look at C or Java code seemed so alien, then I learned about Lisp and even though it was all brackets everywhere seems like it was cleaner to read and write. Then I read about Clojure being a lisp, more modern and with more support and even less brackets, so I start studying a little about it. But then I found a gap between the basic level tutorials and my imagination lol, it felt like if I wanted to improve I should start writing code and learning with reference guides, but it was really hard and since I don't have much experience I didn't know if what was trying to do was too complex or I was being obtuse.
To be fair half of the technical side still very gibberish to me, but since so many people praised Lisp I thought why not? In the end I think still would be better to learn first how these classic language like python works so I also can be delighted with Lisp too.
tl;dr: i choose clojure because the code looks like more cleaner and elegant. Also, because I read that learning how to Lisp could teach a lot that other languages couldn't.
On February 17 2015 09:32 Ropid wrote: I struggle with the stuff and can't come up with good examples that shows that it's an interesting idea (I'm just a noob trying to learn enough Haskell that I can do something actually useful with it).
One of the most interesting things about it in a modern context is this: If nobody can change data, you know for certain that there won't be another thread changing data and breaking things while you're working with it. Immutability is just about the most awesome thing you could imagine when you're writing parallel code.
Then there also is the part where it's much more like math, but I don't know how many people are really attracted by that.
On February 17 2015 18:53 bypLy wrote: hey i was wondering if there is way to get a domain registered for free, including emails, and all the stuff necessary to make an own website
If you want free hosting then I believe that you can get it with Amazon AWS. Some low-level EC2 instances are free of charge if they don't generate too much traffic (you start paying some low fees after exceeding transfer treshold, but it's relatively high for simple sites).
I think Microsoft Azure has a free option as well. Not entirely sure what it covers, though.
@blisse this is a good explanation on rvalue references: source note that && is a reference qualifier, that applies to the (possibly const qualified) type on its left (or the implicit object in the case of reference qualified member function).
and there totally is operator precedence in play in the little snippet that was pasted, or any other expression with operators! suffix increment has a higher precedence than dereference operator, hence the pointer is first iterated, and then the result of suffix increment (a copy of the pointer value before incrementation) is dereferenced (and assigned to if it's the lhs, or copied from if it's the rhs).
On February 17 2015 18:53 bypLy wrote: hey i was wondering if there is way to get a domain registered for free, including emails, and all the stuff necessary to make an own website
You get $100 credit on Digital Ocean for hosting, as well as a .me domain and one-year SSL cert from Namecheap, along with some other stuff. From there it shouldn't be too hard to get a web/email server going.
I haven't used this myself, so I don't know if there's any additional hooks to it besides just trying to get you to start using services so that you'll keep paying for them later.
I figure the biggest advantage if you went this route is you can set up for free, and still get support from the service providers.
Full disclosure, I have very little web hosting experience, so if this is a bad idea, I'm sure someone will point it out.
I need to create a small thick application in C#.net that will need to save its data locally on a client. I'd like to store it in a database, but I don't want to have to install anything on the client other than just the app itself. Is there a way to package the database mechanics all in one single program so the user doesn't have to go download SQL express or something similar?
On February 19 2015 04:45 enigmaticcam wrote: I need to create a small thick application in C#.net that will need to save its data locally on a client. I'd like to store it in a database, but I don't want to have to install anything on the client other than just the app itself. Is there a way to package the database mechanics all in one single program so the user doesn't have to go download SQL express or something similar?
On February 18 2015 22:14 nunez wrote: i must profess my love for std::list: a beautiful contraption.
I almost never use std::list. Stroustrup pointed out in one of his presentations that you should almost always prefer std::vector over std::list in practice, even though, theoretically, there are a lot of uses for lists.
The biggest disadvantage of std::vector is of course that insertion/deletion somewhere in the vector, requires the repositioning of all elements behind the inserted/deleted element(s). Note that insertion/deletion at the back of the vector is amortized constant time.
On the other hand, insertion/deletion is constant time anywhere in linked lists. The biggest disadvantage of linked lists is that it's rather bad at some very convenient stuff, like size(), or access through an index (which is why these are not provided by the stl).
Now here's the big hidden factor for why you shouldn't use lists: iteration. It's the only way to access the elements in a linked list, and it's also possible to do in a vector.
If you iterate over all the elements of a vector, the iterator will just jump one object space further in memory to access the next element, which is very efficient. If you iterate over all the elements of a linked list, the iterator has to jump through memory to wherever the next element is. This form of access is very expensive, especially if you have list of millions of elements.
If one were to compare the frequency and cost of moving elements in a vector, to that of iterating the elements of a list, the conclusion would be that the list will always perform worse than the vector. Of course, the way I presented it probably leaves room for some fallacies and discussion, but trust me on this one.
From the point of view of a programming language, I very much do like the std::list class. Its interface is just so elegant. std::forward_list is an abomination though... first person I see using that class, gets a dropkick in the face.
The presentation you mentioned (for posteriority):
I just finished the first iteration of an actual program written in Haskell. Before starting it seemed impossible, but it was really easy. I end up doing maybe too much inside the IO monad, but whatever, it works and it can only be better from here.
I just saw the most ridiculous sourcecode, its really too bad that its confidential, so i cant upload it. The company payed a decent 7 figure for it, too.
It was a C# project with about 500 different classes and interfaces doing nothing but creating each other and crossreferenzing so badly that they needed to use 2 outside frameworks that support devs in cross references. Everything was an object that did nothing but create other objects and add a crapton of code to make sure the program is in the correct state and somewhere, when you search long enough, something actually does something every layers of objects.
And he best part is that it doesnt even compile as an exe, it needs an outside program that will use the whole shitty mess and create a 100% sequental program out of it (step 1: do x, step 2:do y,...).
It also didnt have a single line of commentary of course, bot that it would have helped.
Maybe i post some of the best lines this WE, but you really need to see the whole project to really appreciate the pure bullshit.
On February 17 2015 18:53 bypLy wrote: hey i was wondering if there is way to get a domain registered for free, including emails, and all the stuff necessary to make an own website
You get $100 credit on Digital Ocean for hosting, as well as a .me domain and one-year SSL cert from Namecheap, along with some other stuff. From there it shouldn't be too hard to get a web/email server going.
I haven't used this myself, so I don't know if there's any additional hooks to it besides just trying to get you to start using services so that you'll keep paying for them later.
I figure the biggest advantage if you went this route is you can set up for free, and still get support from the service providers.
Full disclosure, I have very little web hosting experience, so if this is a bad idea, I'm sure someone will point it out.
Just so no one get's the wrong idea, while setting up a web server is trivial, getting an email service up and running on a personal server takes a pretty significant amount of work. I bought a server on digital ocean and went through the process of getting a mail server set up a while back, and it took me about three days working on it on and off to get everything going.
It's an interesting process, but maybe not the best project to tackle until you're already really familiar with installing and configuring software on linux-y systems.
That said, the digital ocean/namecheap combo is a pretty good one. If you haven't looked into it yet, getting a nice little website up and running with that method is probably way cheaper than you think it is.
Ok so i just was on a very weird looking site and it showed me this as the source code, do i need to be worried now? http://pastebin.com/dQgHU8r1 sry for the dumb question