Tag Info

Hot answers tagged

114

Releasing a project under the MIT license is giving people permission to fork the project. Part of the philosophy behind free software is to give users and developers the right to use, modify, and release the software in ways that wouldn't normally be allowed. If you don't want people to do this, then don't use the MIT license. You can't really complain when ...


59

Was Xamarin's action and the way the action was done ethical or not? Well, let's ask an expert - The Open Source Initiative's listing of the MIT License itself, with the license quoted in it's entirety: The MIT License (MIT) Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ...


45

Unicode Support by default This day and age, programs are being developed to be used internationally, or under the assumption that they might be used internationally. They must provide support for their character sets or render programs written in that language useless.


44

Correlation doesn't imply causation. Developers copy/paste code they don't understand because they're bad developers. The availability of such code doesn't turn good developers bad. If there were no open source projects, there would still be forum posts with code snippets or programming books with examples. So we're back to my first paragraph: bad ...


41

Compared to languages like Perl, Python has a limited number of control constructs: only if and no unless, only for that iterates over sequences and no foreach or C-style for, only while that checks a condition every loop and no do-while, only if-elif and no switch, there's only one comment construct, the #, and for every line you can tell if it is ...


37

First, I'll note that although I only mention "C" here, the same really applies about equally to C++ as well. The comment mentioning Godel was partly (but only partly) on point. When you get down to it, undefined behavior in the C standards is largely just pointing out the boundary between what the standard attempts to define, and what it doesn't. ...


35

Interesting question. We produce a product - code - but we're not like typical unionized laborers. We're also not professionals like doctors and lawyers and accountants. (Can you imagine some hospital administrator demanding that a surgeon work overtime on Saturday - with no extra pay - to push a few more patients through?) Really, we're highly skilled ...


33

Unions are useful when one person can pretty much do the same job as anybody else with little or no training. By allowing employees to negotiate as a whole, you don't run the risk of employers simply finding the person who'll work the cheapest and driving wages down. (At least, that's the theory.) For professional fields, when employees require particular ...


30

Yes, programming languages heavily influence the way we think about programming - everyone who has learned a new programming language that uses a different paradigm than the previous one can testify to this. The more languages you know, the broader your horizon, and that's always a good thing - you want to be able to look at problems from many different ...


28

There are two distinct IT disciplines: Computer Science - is the discipline study of computers and computation using the scientific method. Software Engineering - is the discipline of designing and implementing software following proper engineering principles. The two overlap somewhat, but the distinction is really about desired outcomes of science ...


25

It's always difficult to judge an approach based on a screencast, since the problems picked for demos are typically so small that applying principles like SOLID quickly makes it look like the solution is completely overengineered. I'd say SOLID principles are almost always useful. Once you become proficient with them, using them doesn't seem like something ...


25

I try to think far ahead too, but usually not in code. I brainstorm and take notes, hopefully organizing things well enough so that I can refer back to them. I lean more towards "you ain't gonna need it" with respect to code, but "now is better than never" with design. When starting off building a new system it is tempting to want to build everything now, ...


25

There is no such thing as "dangerous languages". Every language offers different ways of implementing a solution to the same problem, which will lead you to think in different ways than you are used to, ultimately opening your mind and enhancing your skills as a programmer (and not only). Programming always in the same language, using the same approaches to ...


24

I have a couple: Generics/templates. For example, Java generics are powerful, but not necessarily flexible. Also, because they use type erasure, I have seen problems implementing them abstractly, especially in interfaces. And the compiler shouldn't warn when a non-specific generic is used (Like Hashmap instead of Hashmap<String, int>). I think they ...


23

Here's a motto for you: Anything worth doing is worth doing badly. You speak of painting beautiful paintings and coding beautiful programs. I suspect you also want to write good novels and compose good songs. You don't get to do those things, by and large, without working for a long time first and making bad things. So, go out there and do cruddy work. ...


21

Some of the best languages were designed by people who wanted to make a language for themselves. So I think language designers should pay less attention to their users. You can't please everyone, neither should you attempt to.


19

Please make your language analyzable/auditable for computer security people. Security folks need to be able to find vulnerabilities in a program before it ships. Ideally, we're called in early and can comment on the codebase as it develops, but often not. When a new version of the language or core libraries comes out, things that were previously safe may ...


18

Software Engineers do have a union... The "Communications and Computer Workers Industrial Union 560" is a department of the Industrial Workers of the World (IWW or "Wobblies") who work in the electronic communications industry. Their organization is open to workers engaged in computer operation, including programming and networking. See ...


18

The two extremes are about equally bad: On one side the architecture astronauts/academics who can't even look at a class without defining two factories and a strategy pattern. On the other the self-aclaimed "duct tape programmers", often powered by at least some part ignorance, who subscribe to YAGNI ("You ain't gonna need it") to the extreme. Good ...


17

I think you've got a point there, but cp, rm, cd and a lot of others change state, so they aren't really functions. The UNIX philosophy is more about doing only one thing but doing it well; often doing it well means allowing functional usage, but not always.


17

I wouldn't call it unethical. I would call it unsportsmanlike. There's an unwritten expectation that you will give a good faith effort to improve the original version before deciding to fork, and it seems the original author feels that good faith effort wasn't made. That being said, the best way to avoid your software being forked is to be responsive to ...


15

Only 5-10% of time is spent actually writing code. Language designers should pay attention to the difficulties of actually making software work, which means fixing errors and bugs. That means there should be from the get go a good debugger. Not some tool with arcane syntax and key commands that is only slightly better than tons of print statements.


15

The C rationale explains The terms unspecified behavior, undefined behavior, and implementation-defined behavior are used to categorize the result of writing programs whose properties the Standard does not, or cannot, completely describe. The goal of adopting this categorization is to allow a certain variety among implementations which permits quality of ...


15

What Xamarin did is legal and ethical... almost. Let's have a look at the commit fixup of the license and misc typo fixes in the readme: LicenseAndCredit.txt (diff) -Copyright (c) 2010-2012 cocos2d-x.org - -Copyright (c) 2008-2010 Ricardo Quesada -Copyright (c) 2011 Zynga Inc. -Copyright (c) 2011-2012 openxlive.com -Copyright (c) 2012 Totally ...


13

Somewhat akin to the other answers, but the classic "professional" roles in society (doctor, lawyer, engineer, etc.) have not been unionized. The working class banded together into unions to oppose heavy-handed treatment by management and owners. By collectively demanding a change in their working conditions they were effective where a single person could ...


13

matz himself is a nice resource for understanding the principles behind Ruby. Ruby is the definition of beautiful code (pdf): "[Code] is meant [...] to be read and understood by human beings" "Beautiful code is really meant to help the programmer be happy and productive" "[Ruby] is an extremely conservative programming language [because it sticks to if, ...


12

I don't know that any particular natural language lends itself to better programming (except maybe Latin?). I do know that knowing more than one language is pretty powerful. Dijkstra said in one of his last interviews (as reprinted in CACM Vol. 53 No. 8, p. 44): There is an enormous difference between one who is monolingual and someone who at least ...



Only top voted, non community-wiki answers of a minimum length are eligible