The rules are simple
- You must come up with at least one and up to three valid criticisms of your chosen language(s).
- Each valid criticism should be explicable in one paragraph and possibly a code sample.
- Each criticism you make should be unique. If it's already been listed by someone else, choose something else!
- The language(s) you choose to criticize should be ones you've actually programmed projects with. You have no reason to criticize a language you've never used.
- Don't take other peoples criticisms of your favorite language so seriously!
Here's an example:
Java:
- Choosing to have BigInteger as an immutable type. It should be rather obvious that BigIntegers would be used with intense mathematical calculations, and forcing the user to create a new BigInteger object EACH time you perform a mathematical calculation with it is fantastically slow. Even if Java came with a MutableBigInteger type similar to how Strings have a StringBuilder this would work as well. The only way to do this is with your own MutableBigInteger class.
public class Doubler { public static void main(String[] args) { BigInteger num = new BigInteger("1"); BigInteger two = new BigInteger("2"); for (int iii = 0; iii < 100; ++iii) // Each loop iteration generates a NEW BigInteger! num = num.multiply(two); System.out.println(num.toString()); } } - Ridiculously long lines of code. Because Java requires static methods to be resolved through their according objects, you end up with extremely long lines of code, which in the case of trying to live within the 80 character limit, is frustrating. Consider giving a "GroupBox" style border to a JPanel:
import javax.swing.*; import java.awt.Color; import java.awt.Dimension; public class JGroupPanel extends JPanel { public JGroupPanel() { // Look at this friggin' line! O_O this.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), "Title"), BorderFactory.createEmptyBorder(5, 5, 5, 5))); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.LINE_AXIS)); frame.setMinimumSize(new Dimension(300, 300)); frame.add(new JGroupPanel()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
Anyway yeah, that's the idea. I can't wait to see what you guys come up with! :)


Sign In
Create Account

Back to top










