I'm saddened by all the stories I see posted here and on Reddit where people are discouraged from doing things by negative remarks from others.
I'm saddened by all the stories I see posted here and on Reddit where people are discouraged from doing things by negative remarks from others.
People usually have good reasons why they say negative things. It's worth understanding the negative sentiment.
For example, victims of certain types of fraud are often warned repeatedly by friends and family that they are going to be defrauded. Some still go ahead and lose staggering sums of money.
It's important to really listen to the naysayers, if only to understand the risks. Then you can make an informed choice as to if you'll try your hand at something that's potentially costly.
I wanted to learn these arcane incantations so that I could fill this black void with my own Universe. Whether it be CRT, LCD, LED, or Plasma, I have been trying to find a way to bring worlds of light to the darkness of a computer display ever since. Yet, as the scale of my endeavour dawned on me I realised that it would be better to spend a couple of years creating tools that I was comfortable using than rely on C++ as others recommended.
Unfortunately, my estimate was out by an order of magnitude.
Some twenty years later I have only managed to wrangle the process of research and (re)design to a point where I am finally ready to write a comprehensive specification of my multiparadigm "live" programming language and its alternative document-centric graphical user interface only after a self-imposed deadline made at the beginning of last month - otherwise, I'm sure I would still be amusing myself exploring endless "rabbit holes".
Despite this delay, I feel that my project is stronger as a result. I really didn't know enough about computer science when I started and I have found that I need to grok OOP and FP to know that they aren't appropriate for my needs. I was denied the opportunity to study the subject at school and had to travel to Foyle's in London to buy obscure computer books for years before unlimited broadband became affordable. Admittedly, I was paranoid that I would find myself several years into programming my videogame only to discover that "high productivity", "spare me the details", programming language was weak in some respect and could not accomodate the retrofit of some unanticipated, but very necessary, feature. Hence, a lot of the work I have done has been defensive: trying to create a future roadmap that specifies how concurrency and parallelism would work even if I plan to leave the implementation of these features until much later.
Hopefully, it won't be too long before I am using an integrated suite of development tools (created with my own language), to build my own procedurally-generated intergalactic MMORTSFPSRPG (Massively-Multiplayer Real-Time Strategy First-Person Shooter Role-Playing Game), or "adventure" if you prefer. Without my language/tools I very much doubt I would be able to complete such a grandiose endeavour unaided, and I very much prefer working alone without social expectations or professional deadlines - despite how much of my disposable income it has cost.
If I had started implementation sooner I would have made something naive and half-baked. I did not have the benefit of a formal education in Computer Science and I probably wouldn't have attempted a project of this size if I had known all of the work that was involved. Walter Bright wrote a compiler by himself and Paul Woakes wrote Mercenary unaided and Elite was made by just two people, with David Braben on graphics and Ian Bell doing the trading (okay, three if you count the novel included in the box by Robert Holdstock), but that is still just 1% of the staff of a Ubisoft game like Assassin's Creed employing a whole bunch of artists, animators, scriptwriters, voice actors and composers for an estimated thousand man-years to create its content-rich high production values - all of which can be circumvented with procedural content generation as in No Man's Sky (initially, just four developers), and supplementary user-generated content such as or the seven million user-created levels in Little Big Planet, or about seven thousand competitive Halo 3 maps on the Forgehub community website.
Rather than waste mine and everyone else's time "doing the sensible thing" and writing another Tetris clone, I've gone and jumped straight to what I wanted to do, mindful that I will need productivity boosting tools in order to make it and that to write those all by myself I will need a highly productive exploratory programming language and that in order to make THAT it would help if I knew what the hell I was doing and did PLENTY of preparatory reading so that I didn't go in to it uninformed.
"It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat."
The critics often seem to be saying, implicitly, "_I_ could do it better". It's a claim of superiority. I guess it's beguiling, because criticism of this form is so much easier than genuine creation. I think many of the critics don't consciously realize this, since they've never created something of great worth, and have no idea how difficult it is.
I've known very accomplished people who could be haters. But usually accomplished people seem to be appreciative of creative projects, and understanding of flaws (while wanting them eliminated). I think it's because they understand just how difficult it is to do good creative work. They know that someone can bring immense gifts and effort to bear on a project, and still have it go awry.
That's great to hear that you didn't let the negativity stop you.
I was recently told "If you're going to get bogged down trying to get the lexer/parser to work, you're not ready to work on a full blown language/compiler." Hopefully my story will go the same way as yours.
Not that anyone has ever followed my advice, anyway :-)
Anyway, thing that helps me do stuff - focus on getting a piece of program right. Then move onto another part.
Another good saying, all good software starts simple and evolves into a complex solution. So maybe start with Lisp syntax and evolve it into something more complex, when you're ready.
[1]: http://www.drdobbs.com/architecture-and-design/so-you-want-t...