Slashdot Mirror


Ask Slashdot: How Can I Make My Own Vaporware Real?

Long-time Slashdot reader renuk007 is a retired Unix/Linux systems programmer with the ultimate question: After retiring I started a second career as a teacher -- and I'm loving it. My problem: I designed a (I feel) wonderful new language compiler, but implementing it will take me another ten years if I have to do it part-time.

Linus Torvalds was able to leverage the enthusiasm of the Internet to make Linux exist, but 1990 was a more innocent time. How does it work today? Any thoughts?

Or, to put it another way, how can you build a community to bring your ideas to light? Leave your best thoughts and suggestions in the comments. How can you make your own vaporware real?

128 comments

  1. step one by Anonymous Coward · · Score: 0

    Get other people interested. preferably people with the knowledge you are after.
    If your language / compiler is/does anything itnteresting, i think slashdot could be a good place to start.

    1. Re:step one by Anonymous Coward · · Score: 1

      He might be able to hire help, at least for the initial development, on a site like Fiverr.

      But, before he gets started he really ought to discuss his idea with some people who have experience working with some experienced programmers to see just how good of an idea it really is.

    2. Re:step one by ShanghaiBill · · Score: 4, Insightful

      He might be able to hire help, at least for the initial development, on a site like Fiverr.

      People that are bad at development tend to also be bad at hiring developers, so most likely he would end up wasting money on incompetents.

      But the question is about getting people to work for free, not hiring help. Ideas are a dime a dozen, and it is extremely unlikely that he is going to get anyone to work on his, unless it is a really really good one ... and "new computer languages" tend to be the dumbest ideas of all. That is the last thing the world needs.

      And seriously, TEN YEARS to write a compiler? If he has a grammar (and if he doesn't, he has NOTHING) then just slap it into a parser generator such as Bison, and connect that to the gcc backend, or an existing parse tree interpreter, and you're done. That is a couple of weekends.

    3. Re:step one by Anonymous Coward · · Score: 0

      Get other people interested, approach people who would benefit from it and ask them if they know anyone else who would benefit.

      The problem with software language/compiler's is that there is already enough of them out there, and none of them have really been any kind of breakthrough. C is still the golden standard, and if a C compiler compiles directly to machine code, assembly, or some intermediate-language (eg such as Clang's IL) before becoming machine language, that is still trading optimization for portability.

      I'd love there to be a series of front ends for the LLVM project for every programming language, but there just are not common libraries other than the C runtime, and even that tends to have "not in vented here" bits in it depending on the platform.

      There needs to be not only a common "C run time" but STDIO needs to have a common 2D/3D framebuffer, audio, and USB-HID interface, and that just doesn't exist. So most software still has to be compiled against system libraries that change over time. See how many versions of DirectX exist, and nothing on Linux works from one version to another due to proprietary drivers. Good luck trying to compile something made in Python to work against a Vulkan renderer. Audio and windowing still ends up being second-fiddle in multimedia kits.

    4. Re:step one by fahrbot-bot · · Score: 3, Funny

      And seriously, TEN YEARS to write a compiler? If he has a grammar (and if he doesn't, he has NOTHING) then just slap it into a parser generator such as Bison, and connect that to the gcc backend, or an existing parse tree interpreter, and you're done. That is a couple of weekends.

      Even faster if you hook it all up to the logic circuits of a Bambleweeny 57 Sub-Meson Brain and an atomic vector plotter suspended in a strong Brownian Motion producer (say a nice hot cup of tea).

      --
      It must have been something you assimilated. . . .
    5. Re:step one by Anonymous Coward · · Score: 0

      People that are bad at development tend to also be bad at hiring developers, so most likely he would end up wasting money on incompetents.

      The initial version doesn't have to be good, it just has to function enough as a demo to entice other developers to want to work on it. If the base idea is good, then good developers may take notice.

    6. Re:step one by Stephan+Schulz · · Score: 1

      And seriously, TEN YEARS to write a compiler? If he has a grammar (and if he doesn't, he has NOTHING) then just slap it into a parser generator such as Bison, and connect that to the gcc backend, or an existing parse tree interpreter, and you're done. That is a couple of weekends.

      That was my first thought. Especially if the language is wonderful, it should also be small and elegant. Just build a prototype compiler on top of LLVM or the gcc backend, or, if you are lazy like me, compile to C.

      But maybe he really has a wonderful idea that does not map so easily to conventional frameworks - something with lazy evaluations and monads, or something with very powerful build-ins (constraint solving, Gröbner bases, FFT) that needs a lot of library work.

      Of course, my wonderful language (back when I had less knowledge and more illusions) was just C with all the warts fixed. I have since learned that the warts are all there for reasons, and most for good reasons....

      --

      Stephan

    7. Re:step one by LostMyBeaver · · Score: 2

      I was thinking in this direction as well.

      Unlike ShanghaiBill, I write languages often enough to not say things like Bison anymore. Bison and Flex are 1960's to 1970's technologies for compiler design. These days, writing a new compiler is far easier than that.

      Step 1) Parser generator
      Using Antlr which is pretty much one of the most common solutions (though I really don't like Antlr myself) is very easy. You can open Eclipse, setup Antlr and pretty much have a parser up and running very quickly.

      For prototyping a language quickly, using a Packrat parser generator is far quicker, but generally requires building your own AST. Though in modern languages, this is stupid simple. Simply start defining the grammar and add a new abstraction for each type. Then reduce the types as common features become obvious. Expression parsing is generally some of the more difficult tasks you can encounter as they tend to be highly recursive, but it's pretty simple.

      To do a great, job, hand coding a parser is pretty simple these days. While a tokenizer can be a very powerful approach to doing this, generally tokenizing as you parse is really super simple. Same concept as is generally applied to a Packrat, but you just make a class which allows pushing and popping states. Then you make a function to match a regular expression or series of regular expressions. I like to make a solution which takes accepts a list of expressions and lambdas, then given the current state which I'm parsing, I concat all the valid expressions for the state into a single expression with named matching. Then I pass the parser state to the lambda as a parameter. The result is a ridiculously easy parser to write which performs pretty well. It's also very easy to later optimize by caching the compiled expressions.

      A major advantage of the hand coded parser is that it's far easier to add extensive static code analysis to a hand coded parser than most generated ones.

      2) Make a simple tree optimizer architecture

      While tree optimization probably isn't necessary in earlier phases for the purpose of performance, it's extremely useful for reducing more complex states of the tree into more easily compilable branches. For performance, it's really nice to find things like AST states of multiple consecutive if statements against the same variable with the same type and reduce it to a select clause which can be easily optimized.

      3) Produce a backend

      Compiling to C is super easy. C++ is also really super easy. On the other hand, while LLVM IL is somewhat complex for people who don't understand things like startup code and exit code... and things like register allocation can be confusing to many, it's actually pretty easy to generate.

      Compiling to WebAssembly is great option as well.

      These days, I tend to favor compiling to JavaScript. JavaScript is a far better compiler backend than most. It generally produces far better code than even the best C and C++ compilers. This is because C/C++ generates good/great code once. JavaScript JITs however have a modern runtime which constantly optimizes code for the platform it's executing on. It's far more intelligent with regard to SIMD instructions when possible that most other platforms. It's generally truly cross platform as well. If favoring a specific platform such as Qt (which I believe embeds v8), it's quite easy to build GUI extensions. I prefer to compile to JavaScript 5 as it's available everywhere. It's greatest weakness is that it doesn't properly support regular expressions.

      The other beautiful thing about compiling to JavaScript is that massive amount of work has been done to allow easy synchronization for compiling. This is handled well through map files. As such, building a great debugger experience is practically free.

      Using .NET as a back end is absolutely a wonderful experience as well. .NET has excellent extensions for language design. As part of the .NET experience, it's made al

    8. Re: step one by Anonymous Coward · · Score: 0

      I wrote a rather powerful macro/scripting language for my own personal use in just a few months. Yes it's cobbled together and I added new features as I went, as opposed to planning out beforehand, but it works.

      10 years? This seems more like phobia or perhaps an unwillingness to hit the books/manuals than any real inability to write a new language.

    9. Re:step one by TheRaven64 · · Score: 1

      For prototyping a language quickly, using a Packrat parser generator is far quicker, but generally requires building your own AST.

      Pegmatite is designed for rapid prototyping and for teaching (where students are expected to add new language features in a couple of hours. It uses PEGs in an embedded DSL in C++. It doesn't do Packrat optimisation, because that makes it harder to debug (and by the time you need that kind of performance it's probably worth replacing it with a hand-written recursive-descent parser (which also makes helpful error messages easier to write). You can define AST node classes and declaratively associate grammar rules with AST nodes.

      There are a couple of example languages in the same GitHub organisation that are about 1,000 lines of code each for a complete language with an LLVM-based JIT.

      --
      I am TheRaven on Soylent News
    10. Re: step one by reanjr · · Score: 1

      Not all languages can be parsed with Bison. Not all language features are clearly supported by LLVM. For some, self-hosting is important. Some people want to tweak a few things with their new language. Others want to rethink everything.

    11. Re:step one by Anonymous Coward · · Score: 0

      If he does not have a grammar, he does not have a language, and if he does not know that, he should stick to B-Ball and pool.

    12. Re:step one by maestroX · · Score: 1

      And seriously, TEN YEARS to write a compiler? If he has a grammar (and if he doesn't, he has NOTHING) then just slap it into a parser generator such as Bison, and connect that to the gcc backend, or an existing parse tree interpreter, and you're done. That is a couple of weekends

      Well not really, gcc had this really difficult to access parts of the compiler (I'd prefer ANTLR/llvm also).
      As a retired systems programmer it shouldn't be too hard to regex the tokens, hardcode the expressions/grammar if-then-else way without typechecking and churn out some javascript code.
      Do the trickiest grammar parts first, so you have spare weekends for discovering ye next greatest sorting, compression and encryption algorithms.

    13. Re: step one by david_thornley · · Score: 1

      What sort of reasonably modern languages aren't parsable by Bison? I'd think that a language without a context-free grammar would be likely to be confusing to humans and difficult to write tools for.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re: step one by reanjr · · Score: 1

      Neither C nor C++ has a context free grammar. Perhaps those aren't "modern" enough, but they are at least important enough to think about emulating in some cases. Python does not have a context free grammar either, but I think it's still parseable with bison.

      Natural language programming is another area that gets into (infinitely) more complicated language parsing designs.

  2. new language compiler? by Anonymous Coward · · Score: 1

    so a new language or a new compiler?

    1. Re:new language compiler? by Anonymous Coward · · Score: 0

      Seems to me this person needs to do a lot of learning before they even start. A language parser turns an input into an operation dependency graph. A compiler turns an operation dependency graph into executable code.
      If it is a language the big question is what is the lexical structure of that language. and is it easily LR parsed or is it more complex. If however you have a language that is context dependent good luck with that.

    2. Re:new language compiler? by Anonymous Coward · · Score: 0

      A new compiler for the Goat C programming language.

    3. Re:new language compiler? by Anonymous Coward · · Score: 0

      Here are some posts from creimer's old account that was blocked and renamed by Slashdot management. I'll start with his love of child brides.

      If all my assets were liquidated, I would still have enough cash to buy a new car and head off to Mexico to find a chica to marry.
      https://slashdot.org/comments....

      You're aware that are some states in the U.S. that allow underage marriage as young as 14 years old?
      https://slashdot.org/comments....
      As for my comment, I've heard stories of engineers retiring at 50, moving to Mexico and marrying underage girls. Since I work with ex-military, the Philippines is a popular retirement spot for marrying underage girls as well. It's all about getting the most bang for your retirement dollars.
      https://slashdot.org/comments....
      That only works if you retire to Mexico, build a mansion (by local standards), marry an underage sweet thing and bequeath all your possessions to the village.
      https://slashdot.org/comments....

      You need to be more specific. I wrote 3,000+ comments this year.
      https://slashdot.org/comments....

      Nah... I just do it to piss off my trolls and make coffee money off of them.
      https://slashdot.org/comments....
      We have different priorities. You want to climb the corporate ladder. I want to own the corporate ladder.
      https://slashdot.org/comments....

      Your bitch licks your balls. Most people don't brag about practicing bestiality. Is there a reason why you married a dog and not a goat?
      https://slashdot.org/comments....

      My employers don't care about what my Slashdot trolls think. Now go off and lick your balls somewhere else.
      https://slashdot.org/comments....
      iPhone 6s and reduce my monthly bill from $80 to $50. As a phone and a video camera, the iPhone 6s isn't obsolete. As a Sprint customer for 20+ years, Sprint will always offer me a new iPhone if I decide to stop using the 6s as a phone in the next several years.
      https://slashdot.org/comments....
      Miracle workers are never afraid to ask for a second opinion. Supervisor gave me his opinion ? and a mess to clean up. Lesson learned from this incident: if something isn't quite broken, break it.
      https://slashdot.org/comments....

      So you can turn around call me a liar again? People have been playing that game with me for years.
      https://slashdot.org/comments....
      Based on what I've read about Uber, he need to tell the boys to clean up their locker room behavior, zip up their pants, and attend sensitivity training until everyone agrees that women are not sexual objects.
      https://slashdot.org/comments....

      Which doesn't violate the Slashdot TOS. If you got a problem with that, take it up with management.
      https://slashdot.org/comments....
      This year I've posted ~4,000 comments.
      https://slashdot.org/comments....

      I don't bother with mod points. I'm doing something much more sinister. It took te

    4. Re:new language compiler? by Anonymous Coward · · Score: 0

      Context dependence is no problem, it just makes the compiler slower. The hard part are static type checks and good error messages.

    5. Re:new language compiler? by Anonymous Coward · · Score: 0

      A compiler doesn't have to produce executable code, and often does not. GCC is an example.

  3. see, me by Anonymous Coward · · Score: 1

    I am more of an ideas guy

  4. Description? by Anonymous Coward · · Score: 5, Insightful

    You'll need to show someone *something*. Got a link to an abstract discussing why this compiler is so much better and worth the time investment? Not like there's a dearth of compilers of various designs out there.

  5. Prison President will enjoy a lifetime in there by Anonymous Coward · · Score: 0

    Prisonware

    1. Re:Prison President will enjoy a lifetime in there by Anonymous Coward · · Score: 0

      Loser.

    2. Re:Prison President will enjoy a lifetime in there by Anonymous Coward · · Score: 0

      The greatest loser in American history! The rags to riches to prison jumpsuit LOSER TRAITOR WHO WANTS TO FUCK HIS OWN DAUGHTER KIND OF LOSER, now he'll die in a prison cell of old mindless age and gout.

  6. What t. fuck? by Type44Q · · Score: 0

    What kind of vapid bullshit is this?? Let's all have a mental circle-jerk and opine meaninglessly about what it takes to achieve success...

    1. Re:What t. fuck? by Anonymous Coward · · Score: 0

      Dear Slashdot,

      I have a design for a wonderful new skyrise building that will solve many problems that today's skyrises have. I have little architectural and general contracting skills, and doing it part time will take 50 years. I want to see my building to fruition, how do I go about getting the building built?

      Rockefeller was able to leverage the enthusiasm of New York to make the Rockefeller Center exist, but 1930 was a more innocent time.

  7. Here's how to do it: by Anonymous Coward · · Score: 5, Insightful

    Make the language simple enough so a simple parser will do.* Write a simple back-end that works, however inefficiently.

    Then publish.

    linus did it by publishing early and often. He also had the tide with him, building on a handy-dandy toolset, surfing on a wave of user demand for something, anything, that would make their computer go (linux really is very shoddy in its design and very far from the cutting edge, that was already the case right from the get-go), and you don't: There are too many pet languages already. But don't let that stop you. Write software that works, efficient comes later. Oh, and get with the documenting early on. Language specification, goals, non-goals, et cetera. Publishing early and publishing often is still a good start, and then there's the community building.

    * I'd like to mention the Crenshaw textfiles here.

    1. Re:Here's how to do it: by UnknownSoldier · · Score: 4, Insightful

      Pretty much this.

      "Ideas are a dime a dozen, its their implementation that is worth their weight in gold"

      Also a successful business must master "good enough." Build up the revenue stream and slowly add features. The late Steve Jobs knew this in spades. e.g. The first iPhone didn't have cut/copy/paste but it didn't need to.

      These days it is called Minimum viable product

    2. Re:Here's how to do it: by admin7087 · · Score: 1

      That's the reason why there is so much crap and fad software on the net that dies within 3 years after its invention.

    3. Re:Here's how to do it: by Anonymous Coward · · Score: 0

      What have you created that defied the minimal viable product axiom?

    4. Re:Here's how to do it: by Provocateur · · Score: 1

      Agreed; when the creators see the numbers of early adopters, they think that that's it let's not follow through with what we were planning -- this one is good enough, and the numbers are attractive so far. The project develops inertia instead of momentum. The deliverable has yet to arrive; the minimal remains just that -- a mockup of what could have been And in three years it will be forgotten, or remembered as another wannabe.

      --
      WARNING: Smartphones have side effects--most of them undocumented.
    5. Re:Here's how to do it: by ZombieEngineer · · Score: 2

      I would second the recommendation of releasing a viable "proof of concept" for public comments.

      Twenty years ago (how time flies) I was part of a group of people who dealt with parallel port devices for Linux. A couple of newbies joined the Linux parallel port mailing list and started spouting about bus theory for sharing the parallel port for multiple device drivers. For the most part the participants on the mailing list were more interested in the practical side of getting their favorite parallel storage device working with Linux reliably than computer science theory. I responded to the newbies with a "put up or shut-up", in this case "please provide a header file of the routines that you would expect a parallel port sharing module to require". Dutifully the newbie responded over night with prototype header file and the next weekend (and about half a dozen kernal panics later) I coded up a variant of the lp & ppa driver with the relevant glue logic. This was posted to the mailing list and suddenly everyone jumped on the code and started porting existing drivers to the new architecture which shortly became known as parport.

      I must give additional credit to the newbie (I have forgotten the persons name) but he did get stuck into kernal hacking once the parport prototype was released. It is hell a lot easier to start modifying an existing code base than to start from scratch.

      ZombieEngineer

  8. Linux Example by Anonymous Coward · · Score: 0

    Linus filled in a necessary piece of a pre-existing puzzle. To draw an analog: find a puzzle, or a problem domain that needs your unique language contribution and fill the pre-existing need. It's just like creating a business plan.

  9. "I don't mean to frighten you..." by stevegee58 · · Score: 4, Insightful

    "...but you'll have to do some actual work."

    --Dilbert

    1. Re:"I don't mean to frighten you..." by Anonymous Coward · · Score: 0

      Hard work is hard. There is no magic secret to making other people do the work for you. If this is something you want to see done, be prepared to work long hard thankless hours doing it. If you're lucky, and if others see potential in what you're doing, they might help. But if implementing your dream will take ten years alone, better expect to put in at least five of those years yourself before anyone else sees anything but vaporware and pitches in.

      To put it another way: ideas are a dime a dozen. You think yours is great, fine! Just don't expect to convince anyone to implement your ideas for you.

  10. New language compiler by tomhath · · Score: 1

    I seriously doubt you are talking about a new compiler, because you have virtually no chance of making one better than existing compilers for languages in use like C or Java.

    So I'm guessing you mean a new compiled language. Rather than Linux, look at the history of Python, it's closer to what you are thinking.

    If what you are proposing is neither a compiler nor a language than you need to learn a lot more about computers before anyone will take you seriously.

  11. github by Anonymous Coward · · Score: 0

    Post it up on github. Give it one of the permissive licenses. Then work on it! I mean update it every day if you can. Then post statuses every time you update it. Make it clear what you are doing and teach to that.

    Be engaging in the blog you will have (you have one right?). Explain what you are doing. Get other excited. Give them the idea that 'yeah I will pull your stuff in'. Give them the idea you may have a cool thing to share and welcome shared ideas.

    Nothing is worse than coming across a cool project to play with and the main contributor has ghosted it. "oh look cool project XYZ last update Apr 2, 2007". Skip. Your chances of contributing to that are nil unless you basically fork it and take over it. Very few people want that long term. They want to fix a bit and then move on.

    Even Linux had a small following at first. It also had a niche that it was filling mostly as a learning OS. As at the time your choices were fairly expensive or stuff baked into ROMs or DOS. There were a few other open like projects but not really going anywhere. Even linux took at least 5-10 years before it really 'took off'.

    Even given all of that stuff you can do. No promises. But you will at least have a shot at it.

    Beware the prima donnas that may try to latch on. I am watching one project be slowly killed by a prima donna space guardian. If you do not follow their style guide exactly they flip out on you close the pull request and chase you off. Just be nice and say 'hey can you fix it up to match our guide here otherwise it is good'. Do not allow that behavior. As it turns people off. People make mistakes or we would not have bugs to fix! :)

    1. Re:github by packrat0x · · Score: 1

      If you do not follow their style guide exactly they flip out on you close the pull request and chase you off.

      Have people never heard of prettyprint and sed ? Or is this an organizing (function/procedure/module) conflict?

      --
      227-3517
    2. Re:github by Anonymous Coward · · Score: 0

      From sounds of it he has nothing. His GitHub project would be just a README.TXT saying "Hey someone write this for me. Go team!"

  12. Tell people what you have.... then crowdfund? by intermelt · · Score: 2

    Maybe the simplest answer to your question is... Tell people what you have.

    Kickstarter or similar services are a great way to judge interest in a project. If you truly have something people will want, they will gladly donate to and share your idea. Of course this still requires marketing, maybe a break even type of thing. However with a niche offering like this, if you don't have a name or any way to prove what you can do, then don't expect much traction.

    Said in another way... if you aren't already known it will be very hard to become known.

    That being said, we can help without more information... New languages and/or compilers crop up every day.
    Have you invented a new language or just a new compiler? -- this is not clear at all.
    What makes you different from the others?
    How is it better?
    Why would I switch from what I am currently using?
    What is the learning curve to switch?
    What is is compatible with?

    1. Re:Tell people what you have.... then crowdfund? by intermelt · · Score: 1

      Oh and until you tell people what you actually have, it will always be vaporware.

    2. Re:Tell people what you have.... then crowdfund? by renuk007 · · Score: 2

      Okay, here's what it is. It's BASIC.

      I didn't want to make the intro too long, and I didn't want to turn off all the folks who think that BASIC sucks. But I programmed in it for ten years before switching to C, and I kept wishing that there could be a language that combined the speed of C, the friendliness of BASIC, the complex numbers and arrays of FORTRAN, the absolute reliability of COBOL's decimal math, and the stuff engineers always want like double-precision and FFT as built-in functions, and a bunch of connectivity options like hardware support and client/server connection implemented as pseudofiles, and painless implementation of shared-memory records, semaphores and locks.

      So I sat down to write it. Then I found myself "improving" things like almost every day, and finally, two years later, the only thing that was current was the reference manual, because I believe that the manual should state how the software should work, and the software should just shut up and do it.

      Don't get me wrong, I'm willing to do it; and I'm sure I can code (almost) every part of the design, but I can't do it in a realistic timeframe. My last project, which I did alone, was a set of servers for a banking application which had their own scripting language, and the banks running it have, over the last five years, developed a huge library of applications using that language, so I know that my work is reliable. And I've written terminal emulators, some graphic games for wyse-60/99 terminals that actually download code for the terminal itself, encryption and compression engines - you'll notice that most of this stuff is back-end programming. So I can code 90% of the design myself, and the rest is available as open source.

      And I love teaching. I absolutely want to keep doing it as long as I can, because the kids are willing to listen, unlike my colleagues for the past thirty years, and they think I'm funny, which is great for my ego. But I don't want to throw away all the design work that went into my language stuff, so now I'm willing to give away the ownership if somebody out there agrees that it's a cool idea, or wants to take it in a slightly different direction, or anything positive.

      Or I could just work on it quietly for the next few years, just like I'm doing now, but not making much progress. This is where I'm really conflicted.

    3. Re: Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      I donâ(TM)t want to be mean, but... your idea certainly has no purpose or value in 2018. C and BASIC? I guess you might actually be trolling, but in case youâ(TM)re not, here are some clues: try Python, thatâ(TM)s what all the cool teachers teach. Or Scratch if youâ(TM)re not into the whole plain-text thing. If you still think youâ(TM)re not wadting your time, try mindstorms on an ipad.

      Then read the dragon book, and youâ(TM)ll be qualified to come back and ask the question properly. HAND.

    4. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      I kept wishing that there could be a language that combined the speed of C, the friendliness of BASIC, the complex numbers and arrays of FORTRAN, the absolute reliability of COBOL's decimal math, and the stuff engineers always want like double-precision and FFT as built-in functions, and a bunch of connectivity options like hardware support and client/server connection implemented as pseudofiles, and painless implementation of shared-memory records, semaphores and locks.

      It's called Visual Basic.Net, and it's freely available in Microsoft Visual Studio Community edition online. That's right - FREE.

      It has lambdas, soft typing, complex numbers, arrays like Fortran, the syntax of BASIC and the performance "closer" to C/C++. It has semaphores, locks, protected blocks, managed memory, shared memory mapping. It even has the decimal numerical classes in the .net runtime.

      You're welcome.

    5. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      I sense from the semantics that he described that he doesn't know what a lambda is.

    6. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      You know, lambdas really aren't all that amazing. Once you really understand how they work, you quickly realize how much they can be abused. In fact, they're rarely the best choice. And if you think you don't have a choice, you're probably wrong.

    7. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      Aren't you just the smart-ass?

      You're welcome.

    8. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      Earlier poster here - I agree on this. Lambdas are almost a crutch for coders. They aren't necessary, and they change the flow of code to a different style of programming.

      My main point was that if he wants BASIC with advanced functionality, it already exists.

    9. Re:Tell people what you have.... then crowdfund? by bzipitidoo · · Score: 1

      I hate that term "lamba". It's just a fancy term for "unnamed", or "anonymous". What is a lambda function? A function that doesn't have a name, didn't need to be named, that's all! They like to be a little more restrictive, in that if a function didn't need to be named, that's usually because it is of extremely limited scope, like inside another function, and apart from recursive calls, only called from its parent function.

      That kind of unnecessary jargon is representative of the entire field of programming language design. Because they are designing computer languages, they seem to feel freer to mess with English, and invent new, unnecesasry terms because they're such language geeks. I mean, "currying"? What's wrong with calling that "parameter unpacking" or something similar? But, why even bother with it, as its relationship to the meat of programming, which is to implement algorithms, is pretty tangential. Sure, useful for theory, same as a Turing Machine, but no one does any serious programming with a Turing Machine. The choice of font for the source code may be more significant than currying.

      Where it gets ugly for the humble application programmer are those cases where the designers insist on some limitation, claiming it is for the good of the programmers. Sometimes they admit it isn't about the programmer, but about simplifying the compiler. And then it turns out that the problem they were trying to relieve the compiler from solving was trivial for a computer anyway, so long as the computer has another measly 8k of RAM to spare. Like, Java forcing programmers to create separate files for each class. An even older example is the totally useless distinction Pascal makes between a Procedure and a Function, a hangover from Algol. And there's the bit about "strongly typed" (Pascal) and "weakly typed" (C), before scripting languages blew that debate away, taking a leaf from BASIC. By their standards, C is strongly typed, and Pascal is the strict disciplinarian schoolteacher from hell strongly typed.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    10. Re:Tell people what you have.... then crowdfund? by amorsen · · Score: 1

      Almost every modern language is strongly typed. I struggle to think of a modern weakly typed language, but there must surely be some in the embedded space.

      You can perhaps argue that Perl is weakly typed, since you can do stuff like $a = '9'; print ++$a;. However, that is not really weak typing, it is just that the built-in Perl types have a really... imaginative set of valid operators. The string does not stop being a string just because you use an integer operator on it. This contrasts with C, where you can access the actual bit-representation of strings if you so desire, and there are rules that tell you reasonably precisely what you can expect to get out of that. Including the difference between behaviour that is undefined, implementation-defined, and a language extension.

      Static typing on the other hand is mostly gone, again probably with the exception of embedded. Dynamic typing is everywhere. I miss static typing sometimes when I debug.

      --
      Finally! A year of moderation! Ready for 2019?
    11. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      Dare I say, the most programmed (but not the most loved) language in the world at this time, is NOT strongly typed. Its name? JavaScript (ECMA Script).
      Variables are a simplistic "number" "string" boolean" or "object" in all its flavours, including the all knowing functions that contain functions, and return functions, to emulate private variables, constructors, etc. No wonder I upgraded to TypeScript :-)

    12. Re:Tell people what you have.... then crowdfund? by Anonymous Coward · · Score: 0

      Give up now. Your idea is dead on arrival. I'm always on the lookout for a spark of brilliance but I see no merit here. The other posters on this branch of the thread (VB guy, Dragon book guy) nailed it. Cut your losses, learn from the experience and find a new pet project.

    13. Re:Tell people what you have.... then crowdfund? by gunslnger · · Score: 1

      Plus, it has easy GUI design. And you can bring in C/C++ dlls or call python scripts if you really feel the need.

    14. Re:Tell people what you have.... then crowdfund? by gunslnger · · Score: 1

      Python is not strongly typed because it's not typed at all. That is what makes it a horrible language for programmers, but great for non-programmers.

    15. Re:Tell people what you have.... then crowdfund? by renuk007 · · Score: 1

      Here's some extracts from the manual's intro section. They should give a better understanding of the question "why?" The new language's tentative name is "STANDARD".

      Our goal with STANDARD is simple: to create a compiler which generates safe, fast code for processors which provide hardware memory protection and privilege control. Our starting point was C, arguably the most awesomely efficient language on the planet, but whose unbridled power exposes razor-sharp edges to the unwary. It is impossible for a C compiler to generate universally efficient safe code. In keeping with its first incarnation as the original systems language, C guarantees complete and unfettered access to the computer's hardware, including all memory without limitation. These implicit guarantees that C makes cannot be kept if in application mode, the hardware, for instance, will not permit random bits of data to be grabbed from anywhere in memory, or a chunk of data to be designated as executable code and forced to run. In C, string handling is simple but also incredibly dangerous - it is possible to overflow buffers, overwrite other data, and corrupt entire programs merely by concatenating two strings. Even by accident.

      Ideally, a compiler should be able to guarantee all features its designers wish to grant the programmer, and ensure that those features work uniformly and safely; and firmly forbid any other features that cannot be guaranteed. This would create a reliable framework with no unexpected behavior that leads to sudden crashes. But then user-level applications, by necessity, must deny operations that only make sense to operating-system level utilities; they should not permit actions that compromise security, hinder efficiency, or annoy other users. So C is not the answer.

      The safest language, historically, was COBOL. The largest repository of business programs, numbering in the millions, is now "legacy" code - because you could trust COBOL. Everybody appreciated decimal numbers that didn't give annoying binary fractions. But its wordiness and glacial pace didn't endear it to all, and the attempt to repair its unstructured jumping-around with the PERFORM verb was a pathetic failure that descended into monstrously sphagettified code - where the same paragraph could be simultaneously fallen-through and remotely PERFORMed.

      BASIC was loved by the vast majority. It was a simple language that made no unnecessary promises. Its processes and assumptions were very much in line with the philosophy of secure processors, because it was implemented from the very beginning as a multi-user system where it was important to play nice with others; and a little tweaking was all that was necessary to make a safe, friendly, efficient server applications programming language.

      Thus was born the concept of STANDARD: written in lightning-fast C, implementing the safety and reliability of COBOL and the friendliness of BASIC syntax, and incorporating the formidable mathematical toolkit of FORTRAN.

      STANDARD is not intended for front-end applications, having no GUI features, and supports only server-side events. It is designed to crunch data and to service requests, and to do these as fast and efficiently as possible. It retains and enhances BASIC's reputation as the best text processing language ever designed; it is also perfectly suited for batch processing, periodic processing and reporting; and obviously for embedded services. FORTRAN's awesome number-crunching power, which was partially given to BASIC, has been implemented in full with double-precision and complex number support. For accuracy in business applications, currency values may be computed entirely in decimal. In fact, STANDARD guarantees that its data types, from 18-digit numbers and petabyte strings to 10-dimensional complex-number arrays, will work efficiently out-of-the-box in every implementation, thereby removing all concerns about portability.

      In addition, the availability of certain software libraries is required. STANDARD uses the IBM Informix C-ISAM

    16. Re:Tell people what you have.... then crowdfund? by david_thornley · · Score: 1

      "Lambda" is a name with a long history. Back in the 1950s, John McCarthy came up with a language called LISP, that was partly based on Alonzo Church's Lambda Calculus. Lisp was a different approach at programming languages back then. FORTRAN was designed to compile to fast code, code that could compete with assembler for speed, while Lisp implemented programming principles at the cost of speed. For that reason, a lot of computer language development for decades was taking ideas from Lisp and implementing them in a language with a real syntax. Hence "lambda".

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    17. Re:Tell people what you have.... then crowdfund? by david_thornley · · Score: 1

      I'm having flashbacks to PL/1, which was IBM's idea for combining FORTRAN, COBOL, and ALGOL. It was not a tremendous success.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  13. leverage existing code... by Anonymous Coward · · Score: 1

    New language? can you write the front-end for LLVM? https://llvm.org/docs/tutorial/OCamlLangImpl1.html

  14. You have to provide something that people want by Anonymous Coward · · Score: 0

    That probably means it has to be useful or very interesting, and I really mean that YOU have to provide it. It doesn't have to be ready-made if it's useful or interesting enough. A new language is a tough sell though if it doesn't have at least a working compiler and a basic function library.

  15. Actually, it's about.... by Anonymous Coward · · Score: 0

    If you can convince people that it will make people who are different from them unhappy – especially if that difference involves sexual identity, skin color, religion, or culture – they'll pour their cold hearts and dark souls into it.

    1. Re: Actually, it's about.... by Anonymous Coward · · Score: 0

      wow!

  16. In other words: by AmazingRuss · · Score: 4, Insightful

    ""How do I get highly skilled, highly paid people to work on my idea for free?"

    If you figure that out, I'd love to learn it.

    1. Re:In other words: by Brett+Buck · · Score: 3, Funny

      I think its more like:

      "I have this idea about a machine that would transport matter instantly from one place to another, but I don't know much about physics, can someone flesh it out for me"

       

    2. Re:In other words: by hcs_$reboot · · Score: 1

      ""How do I get highly skilled, highly paid people to work on my idea for free?"

      If you figure that out, I'd love to learn it.

      Isn't that the principle behind stackoverflow and the like, where people sell skills in return for a bit of pride?

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    3. Re:In other words: by Chris+Mattern · · Score: 1

      Stackoverflow would like you to think so. In fact, it demonstrates that free advice is generally worth what you paid for it.

    4. Re:In other words: by Rande · · Score: 1

      Spending 30 minutes searching to see if my problem has already been solved to more or less an extent is time well spent. Sure, there'll be a lot of unhelpful junk to wade through, but it's still a lot more efficient than spending all day or maybe even a week tracing through code trying to find out exactly what is happening.

    5. Re:In other words: by WallyL · · Score: 1

      I think its more like:

      "I have this idea about a machine that would transport matter instantly from one place to another, but I don't know much about physics, can someone flesh it out for me"

      Easy!

      1. Design device that transports matter instantly from one place to another.
      2. ???
      3. Profit!

    6. Re:In other words: by david_thornley · · Score: 1

      It's fairly simple in concept. Executing this concept is left as an exercise for the reader.

      Design a piece of software. Make sure it fills a need. If it fills a need for you, that's a start.

      Get something out there that works and does something useful, using some sort of F/OS license. Put it on Github or somewhere like that, so people can find it and contribute code and documentation.

      Get people to use it, and incorporate their fixes and additions.

      Get some momentum going, and aim to make the software very good at what it does. Make it more popular.

      ???

      Profit!

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  17. wonderful new language compiler by Anonymous Coward · · Score: 0

    be less vague! natural languages? computer language? compile like an encyclopedia, or the Dragon Book? new language - why can't you use LLVM, or implement it in a REPL loop in another language? new compiler - dude, that ship has sailed with LLVM ...

  18. It's called work by karlandtanya · · Score: 1

    Instead of trying to figure out how to get everyone else implement your ideas, how 'bout you get off your ass and start doing it yourself?
    Society does not exist to jump when you say frog.
    By asking the question you're just telling us you're a manipulative narcissist.

    --
    "Reality is that which, when you stop believing in it, doesn't go away." - Philip K. Dick
    1. Re:It's called work by Anonymous Coward · · Score: 0

      For every GCC, LLVM, or Python, there are thousands of could-a, would-a, should-a, might-a been languages rotting on old disk drives in landfills arouind the world.

      Born during the euphoria of a manic episodes, they languish and die when the author's emotional stability shifts to its other phase.

  19. Just announce it by Anonymous Coward · · Score: 0

    Speak its name and your vaporware willbecome real ... vaporware.

  20. Who cares? Really, find people who care by raymorris · · Score: 1

    "Get other people interested" is right, and I'd say start that by thinking about WHO would be interested. Would you project be useful? If so, to whom? Especially if certain industries or types of businesses would find it useful, write that down. Write down WHY it would be better, for them, than existing alternatives.

    As other commenters said "a new compiler" sounds questionable, and I wonder if you mean either "a new language" or a "translator from one language to another". If you're actually thinking a new *compiler* for an existing language, you probably have at least a thousand man-hours of work to do in order to get close to parity with existing compilers. Even then, doubtful it would make sense to write a whole new compiler; you'd instead either write a front-end for llvm or just use a compiler-generator like yacc, which automatically (and nearly instantly) creates your compiler for you.

    Note that a new language has to be a LOT better than the old, on technical merits, in order to replace the old because there is a large cost to switching. I've been studying C for years and I use tools and libraries that have been developed over decades, interacting with APIs written by thousands of people. A language with minor technical benefits wouldn't be worth learning not just the new language but new tools and libraries. That's one reason C is still very widely used 45 years after it was introduced. In the last 45 years, people have introduced languages that are objectively slightly better for the tasks C is used for, but none of those languages has been ENOUGH better to overcome the change cost for systems programming, embedded, etc.

    1. Re:Who cares? Really, find people who care by LostMyBeaver · · Score: 0

      Excellent example. In modern times, C is one of the worst languages you could ever use for any project. It is the language of freedom and by extension is a language that through lack of any real intelligence is the language designed to give you the freedom to make truly destructive code. C is almost certainly the best language you could ever learn in order to have a great example of precisely what not to do in language design.

      The static nature of C makes it really slow unless you're writing very static code with very simple data.

      The super-loose nature of C makes it utterly impossible to ever implement any good static code analysis. C developers love the language for many reasons, but it's generally a belief of "I am smarter than the computer and after writing a million lines of code, if I decided I did something wrong, I want to go back and fix it manually with no help of any intelligent tools". Yes, there are some tools which can assist, but let's be honest, if you look at something like GStreamer, you'll see code which will never be able to be processed by static code analysis tools. When something goes wrong in that code, it's a permanent fixture and it will never be properly fixed.

      C is great because the ABI is so stupid simple that you can easily look at the assembly and make sense of it. It is a nightmare when considering things like system calls because the ABI is so impressively stupid that the language can not possibly help you create data segments easily passed between memory modes. As such, we get horrifying extensions to C such as structures with indeterminate sizes and absolutely no help from the language supporting bounds.

      Because of the free nature of C, memory management is just the worst thing ever. Implementing relocatable memory in C is basically impossible, Theoretically, you can go completely crazy with a build your own local descriptor table, but memory management in C is generally so bad that you should be imprisoned for criminal negligence for ever writing dynamic code in C. Most systems run like hell because of the lack of intelligent memory allocation in C as a standard. The GDT on Linux generally looks like a trash bit from hell because of the horrifying memory structure that can't possibly be defragmented after some use. C code is parasitic and wastes so much memory it's terrible. The only possible redeeming feature is that a lot of modern C code tends to favor stack over heap. This at least offers the slightest chance of cleanup. But overall, you should never ever write any C code that uses heap. This is the reason we need gigabytes of RAM to run programs which used to fit in less. Of course, you would argue that C gives you more control over memory than other languages, but that's juvenile thinking. You only have more control over your own heap. You don't have any control over the complexity of the MMU's structures. And once you trash those (and you will in C and C++), there's no going back without killing lots of processes.

      There are some languages better than C for tasks C is well suited. Rust seems promising now. In fact, due to massive backing, there's even a chance Rust could take some market share. But C really isn't very good for much anymore. C is mostly reserved for programmers who prefer religion over knowledge. C is a simple language for simple things. But as you say, this religion will stick. Sadly, if I were to sit down and write an new OS kernel, at least the first few bits of it would be in C as I still don't see a true alternative to it. Though I would consider writing a new language which would be strongly reminiscent of C which would interpret to C, but support strong static code analysis rules.

  21. 1. Download MINIX by Anonymous Coward · · Score: 0

    2. Change all copyrights
    3. Profit?

    https://regmedia.co.uk/2015/07...

  22. Get Zuckerberg by perry64 · · Score: 1

    He did a bang up job implementing the Winklevii's idea a few years ago. Also, there's some dissatisfaction with how he's doing his current job, so he might be looking for a new project.

  23. You code it by Anonymous Coward · · Score: 0

    ...wit a keyboard and Notepad.

  24. Sorry, that's not how it works. by shess · · Score: 1

    You don't make a viral hit by saying "I want to make a viral hit, how do I do it?" You get started, release, provide details, show your enthusiasm by obviously putting more time into it, answer stupid questions over and over until someone starts helping, and you just keep it up. That would take all of 30 minutes to get rolling on Github.

    You provided ZERO details in your ask-slashdot! Literally none! So all signs currently point to you perhaps being unwilling to give up enough control to benefit from other people helping.

    If you're asking how to convince someone else to write the system for your language, haha, good luck, that's not how it works, people who have those skills don't need you as a source of ideas. Linus Torvalds succeeded by doing MASSIVE amounts of work himself, and others starts helping to a lesser extent. Also, he didn't wait for anyone else to start helping, he just started doing without concern for whether it was viable or whether anyone else would contribute. In other words, just do it, don't wait around for someone else to carry your water.

    1. Re:Sorry, that's not how it works. by 93+Escort+Wagon · · Score: 1

      You don't make a viral hit by saying "I want to make a viral hit, how do I do it?"

      A half-dozen boy bands from the past decade or so would like a word with you.

      Also chiming in to disagree is Milli-Vanilli, with the Spice Girls on backup.

      --
      #DeleteChrome
    2. Re:Sorry, that's not how it works. by Anonymous Coward · · Score: 0

      So, software development by giving the problem to big music's marketeering to solve? There's an idea.

      The boy bands are all carefully targeted at teenage girls. The spice girls... at pre-teen girls.

      So what would this music group look like? Targeted at whom, "programmers"? What demographic is that?

  25. Seek the Minimum Viable Product by J.+T.+MacLeod · · Score: 2

    You don't need a fully formed product to introduce your project to the world. You just need something that is complete enough to be useful.

    Maybe that's a feature-incomplete version. Maybe it's a moderately complete spec that can be used to build your goal. Maybe you start by building on some existing toolchain that you later plan to migrate away from. Whatever gets the project rolling fastest without sacrificing its core.

    Once you have that, then you can start getting people's attention. Post about it where people talk about programming and new language projects.

    Build it, and they will come. They will not come before you build it. So build *something*, even if it isn't finished.

    1. Re:Seek the Minimum Viable Product by Anonymous Coward · · Score: 0

      OP, if you're reading: the MVP for a compiler is often just an interpreter. Don't be afraid to take the lazy approach of evaluating the parse tree instead of emitting byte code if just want to get it working ASAP.

      For most languages, you can get by with only implementing get/set, and call; the rest "just works" by recursing the parse tree. Once you've got that working, you can speed it up by a factor of ~10x by emitting byte code and interpreting the byte code (the first 10x comes from data cache efficiency -- hint: think linked list vs. array memory access patterns), then by ~10x by converting your byte code to pseudo-assembly where you only implement branch and call instructions natively (the second 10x comes from using native branches), and another ~10x by spending 20 man-years(*) writing an optimizer.

      * = Or you can just use LLVM and get on with your life after a month or two.

      tl;dr: OP, you could have a working product by this time next week. It won't be fast yet, but who cares as long as it works.

  26. Bend over by Anonymous Coward · · Score: 0

    it works like this:

    1. You have a great idea,
    2. You invest years working on it and your are totally ignored
    3. Eventually you gain a user base and some broad use by industry
    4. Some industrial giant will show interest and convince you to let them support your effort thought funding. They will probably suggest a Linux Foundation forum or something similar.
    5. They will get buy in from a few other people in industry and form the Linux Foundation project.
    6 The project will form a governance body and you will get the opportunity to serve on in the governance team with one vote. Of course the industry "Platinum" members will get 5 votes. You are basically a "tinfoil" member.
    7. The first acts the governance body will be to change the licensing and rename the project so that it better fits into the platinum member's marketing message.
    8. Your voice will fade into the background. You will be a member of the project only as a figurehead. Maybe you will get work behind the booth at a trade show?

    Essentially, you lose the project and all of those years of effort.

    All true. Good luck.

    1. Re: Bend over by Anonymous Coward · · Score: 0

      This ^^^^

      Watched it happen myself. Similar to a popularity contest, these people will come in, ignore everything you do, and steal the Limelight. If it goes bad they will quickly highlight how you are the cause of the problem.

      If you have the political balls to stand up to that. They will figure out some kind of Scandal to strip you of the project. If you decide to partake still, I would recommend being 100% neutral on every possible issue. If you don't, they will quickly find a way to make you a villain.

      The only reason people still do this, is passion and an actual need for whatever is being produced themselves. However polite, do not start a project like this to help other people. It only works if you do it for yourself.

    2. Re:Bend over by Anonymous Coward · · Score: 0

      Alternatively, your project is invaded by social justice warriors (SJWs) who attempt to institute a completely unnecessary code of conduct that is conveniently both prepared in advance (cough Contributor Covenant cough) and worded such that they can abuse the "letter of the law" by rules lawyering in violation of the spirit of the law. The code of conduct enables subjective individual perceptions to override common sense. The SJWs take over the project slowly, generally by shaming the administration for not doing enough to help "marginalized" or "disadvantaged" or "insert intersectionality theory bullshit category" people (hint: the proper response is "no one gives a fuck.")

      Eventually a large portion of your best developers go elsewhere because they don't have time for your project's feminazi bureaucratic bickering bullshit and just want to code without being assaulted by identity politics power-grab cunty-ness.

      See: Rust, Drupal, Node.JS, et al

  27. Do we really need another language? by greenwow · · Score: 1

    Just this week I've programmed in Groovy for Jenkins, Java, JavaScript for client-side, C# for a web app, C++ for a desktop app, SQL stored procedures, Ruby for Puppet scripts, PHP for a web app, BASH, and PowerShell. We already have too many languages.

  28. Money by brian.stinar · · Score: 2

    I own a custom software development company. We accept money to turn vaporware into real software. Money is very useful for turning one thing into another, and was invented for exactly that purpose. Barter has many inefficiencies, and I prefer to use money rather than goodwill, community, equity, animals, vegetables, sexual favors, or IOUs, for creating software.

    1. Re:Money by Kjella · · Score: 1

      No offence, but with money you can have the equivalent of a vanity press. Like you'll have people writing code for you but nobody gives a shit.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Money by Anonymous Coward · · Score: 0

      Your website has "Maintanance" spelled wrong within the first few scrolls down. Might want to accept money to turn misspelled words into actual ones.

    3. Re:Money by Anonymous Coward · · Score: 1

      That was strategically misspelled to keep the client's expectations low. That allows them to ramp-up the work over a long period of time (i.e., obtaining more money with a slower pace).

    4. Re:Money by Anonymous Coward · · Score: 0

      Would you be willing to barter some money for a thorough spell-check of your site? :)

    5. Re:Money by brian.stinar · · Score: 1

      Thanks. This is what happens when I have the intern add content with limited oversight... Don't hire us for copywriting.

    6. Re:Money by brian.stinar · · Score: 1

      Oh no, I've used the goodwill of the community to convince them to work on my project, for free!

  29. Start with a Code of Conduct man! I mean gurl! by Anonymous Coward · · Score: 0

    Just proclaim to the World how inclusive and stress free you want your project ecosystem be, and Them progressive lady folks will flock and do all the development testing and walking your dog.

    Call your language something like toki pona. Oh, wait, that one is taken. Whatever, something pona.

    1. Re:Start with a Code of Conduct man! I mean gurl! by Anonymous Coward · · Score: 0

      Call it "Vaginal BASIC."

  30. Another new compiler! by Anonymous Coward · · Score: 0

    Just what we need!

    We can never have enough "compilers".

    Hopefully it combines the best of JIT compilation, virtual machines, abstraction, bytecodes, memory management, and hides as much as possible from the user.

    We thought Java was fast , I'm sure this will be even faster.

    to hell with assembly, it should run on a virtual machine, running on a virtual machine.

    More indirection == more speed!

    I can wait a few hours for the app to start, since it will be sooo much faster.

    Also, make you enforce a certain discipline in the user. file names should have to be named a certain way, etc. Also don't ever print out any good warning message, stack traces are more than enough.

  31. solve an industry problem by Anonymous Coward · · Score: 0

    Linux solved a problem of early hosts, so if your language can't address an actual industry problem then it will fail. Even if you solve it by writing libraries for a specific use them you'll get users, investments, etc

  32. Sigh. by ledow · · Score: 3, Insightful

    If you can design a compiler and have any clue whatsoever about how to do so effectively, you can sure as hell break out another compiler and code it up.

    Then, once it's self-hosting, you can concentrate on the compiler itself.

    Like every "project" I ever got involved with or people asked me to join since I was a kid - it's the person with "all the ideas" who has no clue how to actually make the thing work, or what's even feasible. While the people who "can do" have a thousand such ideas throughout their life and can implement the ones that actually work and are feasible.

    Trust me, I've sat there for years thinking about ideal programming languages and game concepts and operating system design and all kinds of things. It's when you sit down and actually code stuff that you realise why it doesn't work, why it can't work well, why it's not so easy, and why the existing things were designed as they are.

    The "wow" moments come from someone MAKING IT HAPPEN and seeing that the lightbulb-moment can be real, never from just the moment or idea itself.

  33. How about linux for ARM by catsRus · · Score: 1

    Totally off topic! Why a new language? Lots of old ARM hardware out there just dying to broken out of the walled gardens from whence they came.

  34. Start by Archfeld · · Score: 2

    Start by recruiting your own students in a group or club, and then post a project to GitHub or Openhub.

    https://www.openhub.net/

    https://github.com/open-source

    --
    errr....umm...*whooosh* *whoosh* Is this thing on ?
  35. hard work by gravewax · · Score: 1

    You need to get your idea out their, WITH a good explanation/business case explaining why what you are doing is inherently better/innovative and worth the investment of time from others. You have a huge amount of long hours, hard work and persuading to do and you better have a very very good justification for the value of yet another language/compiler if you want anyone to follow.

  36. Don't reinvent the wheel by Locke2005 · · Score: 1

    We don't need another language, and compiler design pretty much peaked in the 70's. Try to build a community of interested volunteers, but if nobody is interested, that might be a clue that your idea isn't valuable enough to anyone except yourself.

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
  37. Find a group, then convince them by malxau · · Score: 1
    Being successful requires:
    1. Finding a group of people facing a similar problem with skills to contribute.
    2. Demonstrating enough value to them to justify their effort.

    These are both really (!) hard things to do. The software market is fairly crowded these days, so demonstrating you can beat existing offerings is hard. And although the Internet allows people to search fairly well, finding people facing similar problems is still really hard. It's not like you can show up on forums of a similar product, pitch your idea for a different thing, and expect to be well received.

    Realistically, don't start a software project if you're unwilling to be the only one working on it.

    (Personally I'm trying to build a decent native code Windows command prompt, and I can't believe others really think CMD is wonderful, or that managed environments are fun to use given their performance, or that sitting on emulation layers is a great way to interact with an OS. But the set of people who are passionate and skilled enough to act isn't that big, and they don't all hang out in the same place, so I'm still the only contributor, and I don't expect that to change imminently.)

  38. Slashdot isn't your personal army by Anonymous Coward · · Score: 0

    > Or, to put it another way, how can you build a community to bring your ideas to light? How do I get highly skilled, highly paid people to work on my idea for free?

    Ha ha. That's really arrogant. It isn't going to happen. If you can't get interested in it then it's unlikely anyone else will care either. Everyone has their own projects. That you've spouted a done-a-milliion-times idea and expected others to hop on board is deluded thinking.

    Linus did it himself. He didn't expect others to do it for him to make up for his own laziness. He got shit done.

    For genuine hackers looking for motivation to make their project happen WITHOUT EXPECTING OTHERS TO DO THE HARD WORK FOR THEM here is some advice:

    You need sheer bloody minded persistence. Even seemingly easy software project can take years decades to write. You just need to keep at it and don't expect others to come in and do it for you.

    If you reach a point where you're not enjoying it, where you don't want to do it, then you're burned out. Burn out is a sign that what you set out to do isn't worth it.

    More tips: Keep it simple and get something out there fast and don't bore people by talking about it at the expense of doing it.

    Though not every idea you have will be a great idea but it's hard to tell at the start of your journey.

    As another poster said: There are many compilers out there. If you're doing another one it's only for your personal pleasure. That's okay, but don't expect public support.

    Re-evaluate what you're doing with what you're learned and your new understanding of your situation and you can decide if to persist or if to give up. Reality is although some long term projects people persist with are worth it many are not and the sooner people give up the sooner they can move on and do something else. You've learned a lot by the journey. If you realize the destination is no longer worth reaching that's okay.

  39. examples by bugs2squash · · Score: 1

    I suggest you write a few code samples in your new language and convince people that it has something captivating about it. You don't need a working compiler to write software, only to run it. And if you have already told people what to expect the output is they don't need to run it to find out.

    Here's an example of my new language

    10 ask what I want
    20 do it
    30 goto 10

    But seriously, if people see an elegant new way to solve a real problem they might go for it - eg. a way to tie in unit tests to the source code better, or a cool way to program in 3-d minecraft-like blocks

    --
    Nullius in verba
  40. Whip it out by Humbubba · · Score: 1
    Disclaimer: bullshit from the ignorati follows.

    1. Make an pre-announcement to popular geek sites - like you just did here. When it's ready, get both your targeted audience and vaunted coders to review the beast on those sites.

    2. Make a WEB site like PHP.net or SQLite.org, with announcements, news, conference and event dates, examples, comments, downloads, documentation, Q&A, important people info, email, sponsor and donation links, and thanks.

    3. Create a 501(c)(3) organization. If you want a viable community, it's gonna cost money. And tax-exempt is good for both you and your donors.

    4. Do what docker did, have a URL pointing to a QC'd step-by-step user-interface that lets the visitor create a simple little example, easy to grok, showing the language's power and potential.

    5. YouTube tutorials, starting with a beginner-friendly instructor who goes into an overview of the language's virtues, then writes and runs the obligatory 'Hello World!'. Next, the tutor explains the awesomeness of the language. The other tutorials that follow should have a similar format - somehow this makes it easier on the student.

    --

    In writing a new language, what are you going for? Is there something missing from the plethora of languages out there now? What are the newbie's virtues and problems? Simplicity? Completeness? Is the language completely or partially objective? Are there tools to write code with? Plugins for things like Vim? Does it have garbage collection? Compiled? JIT? What's the programming paradigm - is it tightly structured? Are there dependencies? Is this a server side language? How insulated is it from being hacked?

    Many developers are legitimately concerned about the long, lingering Oracle v. Google legal case. Once considered 'fair use', you now might be sued over API 'misuse'. With that in mind, is there anything programmers should be worried about in this new language?

    1. Re:Whip it out by serviscope_minor · · Score: 1

      All good ideas, but too soon. You need to have the meat of something before it's worth setting up the company. In other words, it'll have to start by implementing a basic form of the language. Slow, missing features, weaker library, but the design and initial implemention needs to be there.

      5. YouTube tutorials, starting

      That depends if you want new users or experienced programmers who can help on the project.

      --
      SJW n. One who posts facts.
  41. Steps by AHuxley · · Score: 2

    Start webpage. Something you have total control over.
    Add blog, forum, live chat support. IRC. A gui for browser web chat. Video updates for your site.
    Live webcam chat with a groups of supporters.
    Translations. Have a list of contact details for your site. From security to press, media, general questions, offers of support.

    Someone wants to do an interview at 2 am from their part of the world? Do it. Thank them and be ready for lots of different questions.
    Be ready for video, sound only, the need for lights, a mic and a good background setting on video chat.
    Ensure a good internet connection with another way to connect on the day of the interview.

    Someone sends in a security question. Thank them. Given them a clear time line of how the issue will be responded to quickly. Days, weeks, months.
    Show them the results and ask if they want recognition. Thank them again. Update any blog, security comments as needed over time.

    Set out how the project will be worked on and show progress.
    Update the blog every day. Have more detail over weeks and months. Video clips.

    Keep control over your forum, your blog, your clips. Sites and social media can change their TOS at anytime so social medias offer of "free" and lots of "ads" can change at any time.
    Read all TOS on any hosting and code site and what owners have set out as their politics and conditions when using their site, tools.
    Upload examples, a guide, FAQ and what is supported so people can get an overview. Then how to support the project.

    --
    Domestic spying is now "Benign Information Gathering"
  42. Linus Torvalds by Anonymous Coward · · Score: 0

    Linus Torvalds wrote a working kernel by his lonesome. Then was able to use the project's inertia and respect for his development and leadership ability to recruit other brilliant developers to improve it.

    Linus Torvalds also built Git from its inception to managing the entire Linux source tree within 10 weeks.

    Linus Torvalds built his software through blood, sweat and tears (as well as an admitted amount of natural talent).

    If you believe that you can "leverage the enthusiasm of the internet" to make software magically appear, then you obviously know nothing about the hard work and genius that really causes these things to happen.

    As for your language. Implementing your own programming language is a bit like masturbation. It gives a certain feeling of satisfaction and sometimes you just have to do it. However, don't expect others to get as excited about it as you are.

  43. You don't, without something that works. by tlambert · · Score: 1

    You don't, without something that works.

    Mozilla was pure mental masterbation for years, until it was possible for someone outside the company to build a working version of a browser.

    Until and unless that happens, you've merely "declared a project", and like most such projects on SourceForge or GitHub -- absolutely no one will give a damn, until you ive them the power to tinker.

    And you will not do that without working code.

    By the way: if you are actually a UNIX/Linux systems programmer... it will take you less than three months in your spare time to get your compiler up and running on LLVM.

  44. attempt at positive response. by anon+mouse-cow-aard · · Score: 1
    insomnia sucks...

    Get something working (even if it only is 1% of what the real thing is supposed to do.) put it up on github.com. Make sure the build/test environment works on Linux, because that's where likely contributors are. Tell people about it. If it really is a world-changing idea, someone will care, and may contribute.

    I have done a handful of open source projects. I'm convinced some of them are really cool, but they're niche, and it is very rare to get any help. In Startup jargon, they talk about *minimum viable product*. To make something attractive, so others will join, they need to see it as immediately doing something for them. I think you need to get your product to an MVP state before you start trying to get others to help.

    If you cannot get working code on your own, then forget it. No-one will even understand what you project is about. Talking, explaining , etc... is very difficult. Show, don't tell applies in software. Getting *something* working also makes you learn a lot about the idea, and explore it and understand it better yourself.

    Somebody mentioned bison and yacc. Those are tools that date back to the seventies when DSL's (Domain Specific Languages) were fashionable, they are about 90% of what you need to build a compiler. They have been used to build thousands of DSL's and would very likely be good enough to build an initial product, and you will learn a lot. If you still think it is a good idea after building the initial compiler, then great! Another approach would be to build the compiler in a *easy* language like python. This paper: https://legacy.python.org/work... outlines an approach to doing that.

    So those are technical strategies for doing what you want to do. Personally I think inventing a new language is unlikely to be helpful. Programming languages are a means for people to talk to eachother very precisely. They go through exactly the same economic & network effects as human languages, and people are inventing human languages from time to time, and they don't catch on. Examples: Esperanto, or more recently, Toki Pona (https://en.wikipedia.org/wiki/Toki_Pona) proposed in 2001, with 100 fluent speakers in the world! Worse, there are a lot of human languages that are dying off ( https://en.wikipedia.org/wiki/... ) , not necessarily because of any genocide, but instead because the populations are being assimilated into bigger groups. This is just the Network effect (Oscar Meyer effect for North Americans of a certain age.)

    Network effect is huge: people learn programming languages because other people already use them and provide libraries of stuff that is already done. Programming languages was a primary area of research in Computer Science in the 70's & 80's, taught formally at school, and there is a lot of literature and dead languages from that time. That seems to have calmed down a bit in recent decades, and the world seems to be converging a bit. There are still hundreds of reasonably popular (even if only in specific niches) languages and it is hard to imagine what *your* language would bring to the table that would be of sufficient value to overcome the massive network effect of introducing a new one.

    there are explicitly pedagogical languages like Scratch ( https://en.wikipedia.org/wiki/... ) but the problem with pedagogical languages is that any skills the student acquires, they kind of need to start over with a *real language* at some point, so there needs to be a really big payoff to justify the diversion. The top programming languages ( https://www.tiobe.com/tiobe-in... is one indicator ) are Java/C#, C/C++, and Python. Of those three, python is the obvious first choice in terms of ease of gett

  45. Linus? by thegarbz · · Score: 1

    Linus Torvalds was able to leverage the enthusiasm of the Internet to make Linux exist

    No he wasn't. He brought Linux together all on his own without external help. Once he did so the enthusiasm of the internet made Linux popular.

  46. 500 out of 500 (just say "I forget to call free") by raymorris · · Score: 3, Informative

    > The static nature of C makes it really slow unless you're writing very static code with very simple data.

    Of the 500 fastest supercomputers in the world, 500 are C-based systems. C is the ONLY language used by super-fast systems.

    >Implementing relocatable memory in C is basically impossible

    Please see - well anything under /usr/lib.

    Otherwise, it sounds like basically you're trying to say "I forget to call free() after I malloc some memory".

  47. Merge Your Efforts by cultibot · · Score: 1

    You can pay people to do something that won't matter in the end, but unpaid volunteers need some more substantial justification for the time and effort they invest. Better than to start a new effort from scratch would be to distill the aspects of this idea that are new and better than existing compilers, and take those to the community surrounding an existing open-source effort, such as http://llvm.org/

  48. You got it backwards by Anonymous Coward · · Score: 0

    The poster claims that he or she designed a wonderful new compiler, without telling what language it would compile. If it is that wonderful, it may be suitable for many or any languages.

  49. Re:In other words: patent it by Anonymous Coward · · Score: 0

    Some company turns your idea into a product, you collect more royalties than the King of Belgium.

    (I realise some Slashdotters don't like patents)

  50. Use Antlr to build your Lexer & multi-pass Par by Anonymous Coward · · Score: 0

    Antlr is one of the better tools for developing parsers and compilers. Antlr will generate code for your lexer or parser in just about any language you want: C, C++, C#, Java and many others,

    Antlr uses a LL(n) parser generator instead of a LR parser generator like Bison. Antlr will also generate the Lexer and AST walkers so you can just Antlr for your entire compiler.

    All well formed compilers follow the same pattern:

    1) Input Source Class:
    a. File * for main input
    b. buffer * for file contents
    c. line#, column#, offset of current Lexer input position
    d. Source File Name
    e. map for include files
    f. map for open include file names
    g. stack for nested include position[s]
    h. function to get next source char, maintain line#, column#, offset and automatically pop include positions at EOF
    i. function to push new include file
    j. function to cleanup all structures at EOF of main input
    k. function to report include stack file names and positions for error reporting

    2) Lexer Grammar:
    a. Implement a separate Lexer grammar in the Antlr grammar language to recognoze all of your compiler's reserved words and symbols like Identifiers, Strings and Numbers.
    b. use the automatically generated rules for Identifiers, Strings and Number or build your own rules
    c. actions in Lexer grammar may only use functions in Source Table class

    3) Lexer:
    a. identify the boundaries between tokens
    b. convert a stream of characters into a list of tokens
    c. ignore comments and whitespace
    d. generate Comment Tokens that are ignored by parser rules but attached to AST in the Parser phase
    e. handle file includes
    f. report all lexer rule errors with include stack of file, line#, column# for error position[s]
    g. recover from extra, missing or invalid character errors and continue Lexing
    h. the output of the Lexer is a stream of tokens

    4) Token:
    a. token type [integer or enumeration value]
    b. line#/column#/Include# of source for start of token text
    c. source file/buffer start/end offset
    d. length
    e. text [only for constants, identifiers, bind variables, no text for keywords or reserved words]
    f. one or more fields to be updated by Parser, AST Walker, or Translator [pointer to map [class name to class pointer] for attached info]
    g. function to get source file name from include stack
    h. function to get line#, column#, token Text for trace and errors

    5) Symbol Table Class:
    a. For a Block structured language the Symbol Table is a stack of nested scopes where each scope has a map [Name to Type]
    b. For SQL the Symbol Table follows the same hierarchy as a SQL System Catalog: Database ==> Schema ==> View ==> Table ==> Column ==> column attributes [data type, key, virtual, generated, etc.]

    6) Parser Grammar
    a. The Parser grammar represents the structure of your language
    b. the input to your Parser is the stream of tokens from the Lexer
    c. whitespace tokens are ignored by the Parser grammar [except to attach them to the statement level rule]
    d. actions in Parser grammar may only use functions in Symbol Table class and ParserErrorHandler

    7) Parser:
    a. Parse a list of Tokens generated by Lexer [no access to source text]
    b. validate Identifiers [verify declarations for variables and user defined functions]
    c. annotate Symbol Table variables and functions with the declared data type
    d. validate function parameters for number and type
    e. validate operator/operand type restrictions
    f. enforce operator precedence, associativity and commutatively
    g. detect forward references
    h. generate an Abstract Syntax Tree [AST] with a node for each invoked parser rule and source token/identifier
    i. report all parser rule errors with file, line#, column# and text from Token
    j. recover from extra, missing or invalid token errors a

  51. Open source project by Anonymous Coward · · Score: 0

    What we need is a "kickstarter" where coders donate coding time.

  52. LMAO by Anonymous Coward · · Score: 0

    > I hate that term "lamba". It's just a fancy term for "unnamed", or "anonymous". What is a lambda function? A function that doesn't have a name, didn't need to be named, that's all!

    Thanks for clearing that up. Serious! I've been hearing about them for years, and it turned out I've been using them for years. When I read the doc on lambdas I scratched my head and went back to what I was doing. So some some wanker invented a name when they could have just said anonymous or unnamed function, but instead hid an ordinary idea behind jargon.

  53. If Only... by Anonymous Coward · · Score: 0

    ...if only there were some kind of global network, to connect people together... ...if only there were some sort of writey-thing, that could allow ideas to be fleshed out and publicized... ...if only there was a place to put code, just out there, for anyone... ...if only there was a system of legalistic rules, to clarify what was permissible and what was impermissible, for code use... ...if only there was a way of raising money, to allow good ideas to be funded... ...if only there was a set of words, phrases, and a supportive culture, that people already knew, that a computer language author could tap into... ...if only there was a group of computer languages that had gone through this process, and people could model their success (or lack thereof), on those prior languages... ...if only there were some knowledge sharing mechanisms, so that a total newbie could address their lack of knowledge, and sound less like a clueless and out of touch ignoramus...

  54. The same thing that makes the world go round by The123king · · Score: 1

    Money

    By paying people to develop your compiler, you're taking some of the workload off your back, and putting it on someone elses, in exchange for money. If you employ enough people, and keep the source code proprietary, you could then sell licenses to your compiler and generate a profit.

    Many technology companies use similar tactics to generate income.

    --
    If you gave me a choice between a printer and a giraffe with explosive diarrhoea, i'll get my ladder and my raincoat
  55. Re:500 out of 500 (just say "I forget to call free by LostMyBeaver · · Score: 1

    The vast majority of super computers are distributing tasks through a scheduler which happens to be written in C. The code they distribute is most often developed in Matlab or similar languages... which are hogs and run so amazingly inefficiently, They generally work on extremely static data sets as well. Super computers are best suited for consuming data, not producing it. The key exception is the LHC.

    Two years ago, I saved an oil exploration company $4 million a year in super computer rentals by introducing their scientists to Intel's VTune. Now, code which used to require time on Top500 computers to calculate runs fairly well on 3 rack servers with 4 GPUs each. Never ever ever use super computers as a method of describing efficiency.

    If you want to test a small scale example of this, get your hands on Cisco Prime. A function of Prime is to consume data from spread spectrum radio analyzers for many purposes ranging from adjusting transmitter power levels for wireless networking to performing rogue device detection ... you know... all that nifty math stuff for radio. Cisco requires 16 dedicated Xeon CPU cores and 24 gigs of RAM to run this software. And as soon as you do that it becomes a dog with flees. If you ignore Cisco's hardware requirements and use a $500 computer containing a $69 NVidia GPU and slipstream the NVidia drivers into the Linux distribution, the Matlab code will use the GPU and run 1000 times faster than on 16 dedicated Xeon cores. On the other hand, if they were to actually tune and profile their Matlab code, it could probably run 100,000 times faster as the Matlab code they're running is actually incredibly slow.

    What they're doing is basically a super computing task. And the math they're performing is typically super computing math. It's super-inefficient and even after a so called super computing expert analyzes their code and attempts to make optimizations, there's very little that can be done for most code like this. You'd have to rewrite it for there to be any hope of it not sucking and since the code is often highly convoluted crap, it simply is generally impossible.

    So we use super computers that generally run massive schedulers written in C that should have been written in a scripting language but someone was an idiot. The we run code which probably should have been rewritten to work on a laptop GPU but instead will burn computing time at $25,000 or more an hour. We do that because the code can run on the super computer now, rewriting for a laptop GPU will set things back a year.

    Finally, don't forget that 99% of the C code which is run on super computers is compiled to C from other languages. This is done because you would never write that kind of code in C. The other reason is that you can't really easily distribute the programming language you coded in to all the systems. Oh... and to make your code work on x86, Cuda, OpenCL, whatever else... you don't hand code that. You use a high level language like Matlab which will compile your code into code that can run on all these things.

    Relocatable memory has absolutely nothing to do with malloc and free. It's the principle that memory can be relocated. So, as opposed to using a pointer to a fixed memory location, you would use a pointer to a pointer and access the memory through helper functions.

    The purpose of this is that when you're performing a massive amount of allocation and frees, there is a tremendous amount of memory fragmentation that occurs. So, if a web browser for example which is very dynamic in nature will end up with massive amounts of wasted memory because it is nearly impossible to defragment the memory.

    Solving this problem in C is definitely possible, but the static nature of C makes it very very difficult. As such most dynamic applications written in C are hogs. It looks like "wow I'm hardly using any memory" but the entire system is suffering because C is so poorly suited for memory management.

    Using proper modern languages, things like movi

  56. This is a very hard problem. by Qwertie · · Score: 1

    I have the same problem as you with my ideas for "Loyc" projects at http://loyc.net/ - they gather very little interest. As a consequence, I've lost enthusiasm for my projects and subsequently they've had little progress. I suspect the problem is that people don't want to really look at or help with a project until it is already fairly mature. It could also be that everybody's too busy trying to make a living. But perhaps I haven't marketed my ideas well enough or done a good enough job explaining what I want to accomplish.

    People have good reasons - other than learning curve - not to learn your new programming language:

    - There are already lots of good languages out there. I've seen lots of language designs that failed to even attempt to answer a basic question, "what advantages does my language provide that NONE of the existing languages do?" I think that's because most new language designs actually DON'T provide anything that hasn't already been done pretty well by existing (but often unpopular) languages. Make sure you've looked at other less-popular languages like Nim, Ceylon, D, Rust, etc. to see if they can't already do what you want.

    - New languages have lousy tools. Lots of developers expect IDE autocompletion features, a package manager, a debugger, a way to target Android/iOS, a way to target web browsers, and of course syntax highlighting.

    - If they write code in your new language, it won't interoperate with other languages. You could make it a .NET language or JVM language so it can interoperate with other .NET languages and JVM languages (and you get multiplatform support for free), but both of these options (especially JVM) substantially constrain the design of your language - your language won't be capable of various low-level features that .NET and JVM cannot do. You could (and should) support interop with C, but C libraries tend to be very clunky to use (e.g. memory management is always a pain in the ass.) I'd say the .NET runtime has stagnated for quite a few years but it looks like they're finally adding valuable new features, e.g. a feature traditionally known as slices, which in .NET is called Span.

    Without interoperability, your language will be extremely limited since it won't be able to take advantage of existing code libraries, and therefore very few people will want to use it even if the language design is fantastic. In Loyc I want interoperability to be a core focus (though again, due to lack of outside interest I've made little progress).