Git Product home page Git Product logo

Comments (7)

jondgoodwin avatar jondgoodwin commented on May 28, 2024

What a worthy challenge: upgrade LLVM and gain user(s)!

I have been operating on the assumption that no one would seriously entertain much use of Cone in its current state, with so many distinctive features not displaying their full beauty: programmable regions, lock permissions, multi-threading, modules, delegated inheritance, lifetime enforcement, initializers/finalizers, and more. Even features that work, like traits and generics, have lots of usabiility holes. Although I always leave the compiler in a working state, the version of Cone implemented so far does not yet feel competitive enough to support someone trying to do interesting things...

Convince me that I am wrong, that you see enough there to make it worth your time to play with it now. Tell me about your plans for Cone, and you might just shift my priorities!

from cone.

rempas avatar rempas commented on May 28, 2024

What a worthy challenge: upgrade LLVM and gain user(s)!

I have been operating on the assumption that no one would seriously entertain much use of Cone in its current state, with so many distinctive features not displaying their full beauty: programmable regions, lock permissions, multi-threading, modules, delegated inheritance, lifetime enforcement, initializers/finalizers, and more. Even features that work, like traits and generics, have lots of usabiility holes. Although I always leave the compiler in a working state, the version of Cone implemented so far does not yet feel competitive enough to support someone trying to do interesting things...

Convince me that I am wrong, that you see enough there to make it worth your time to play with it now. Tell me about your plans for Cone, and you might just shift my priorities!

I mean, I wouldn't say that you are wrong. Your point is great. However, one of the questions you have to make yourself (I made the same question to myself before making this suggestion) is how many features are you going to implement before going to migrate to LLVM12 (or the latest version at the time)? Do you have a fixed number in your mind? Also how much time every feature will take to get implemented and become stable? How much time it will take you to migrate LLVM12?

From my point of view, the more LLVM releases are going to be released, the harder it will be for people to install LLVM7 so it will make our life mach harder (I truly believe that I was not the only one having this problem and other people wanted to try Cone too). Also migrating to LLVM12 will be fine until LLVM15 so you will be fine for another 1-2 years and probably at this time, you will have implemented and stabilize a lot of features before doing the same process for the then new LLVM.

Another things that I want to point out is that I find your view about the "full beauty of the language" both right and wrong at the same time. From once, you are right! People want to use languages that have modern features because they will come in handy in a lot of scenarios but at the same time, most of the people will not need a lot of features before we start creating big and complicated (mostly that) programs so I don't think that you have to rush to implement everything. Something more I have to add on this note as that so people may even don't like to use the extra advanced features. Take for example the fact that C (which is simple) is still a widely used and loved language, C++ is used by a lot of people as C with some FEW extra C++ features (which are still very basic for our modern programming), D get criticized after going in the 2.0 and got complicated and Huge and Go is also a very widely used language and it's also very simple. So not having implemented everything may also be a good thing so you can listen the community (and from your reply in my comment I suppose you like listening the community) and see how the language can grow and change for the better.

Also keep in mind something VERY important. Let's say that you implement every feature that you like. Then what? Cone could now had every feature you liked. The problem is still the same. I can't use it. So you are thinking (and again you are right from one point of view like I said) that people will appreciate the extra features but every time you would add a new feature, people will still not being able to use the language so in the end. Now there are two things with that. You may think that it is better to first implement everything and then have the user try the language because some users will only give one chance to the language so it's better to be complicated first so the users will have a higher chance liking it right? Well I think that's wrong and let my explain:

First of all like I said some people will like the simplicity so you already win those people. Now for the other people, I don't think anyone that takes programming seriously, will go away in the case that they like the language but they miss some features because we promised that they'll get implemented so how many people will get disappointed and leave? 1? 2? Maybe 5? idk. However! Another thing to consider is that at the same time, you're going to lose WAY more people that cannot get their hands on the language. I know from first hand that everyone that searches for another language and doesn't use the famous 5-6 ones, wants for something new. In 2021 there are TONS of languages that are hidden and people have not discovered yet so the market is very competitive. So people who want to find a language to work with (even incomplete, even not as fully as expected to be), cannot wait till they are able to use it. For those people, not being able to use the language is way worse that not having the "X" feature to work with. And I think they are more than the people that will turn you down because you don't have the current feature now. And even for the people that will turn you down. If they try the language and like it as a language, they will probably check now and then to see if the feature they wanted has been implemented probably. While the people that will find another language, will probably never return.

Any way that is my view in the whole topic and I think it also answers the question about "my plans" for Cone. The truth is, I'm starting to realize that I'm probably not into programming. Idk why but I can't seem to have stick to any language. They will all have at least 1 thing that I can't stand. At this point, If I'm to pick one, I will probably use D with DMD and the "BetterC" mode. So yeah I'm really really exited about Cone at this point! And I hope the best for you and the language no matter what you want to do with it! In general don't see this as an attempt to try to change your mind but just as a discussion. I'm just saying how I see things. This is your language and every choice should be something you 100% agree with and not something that someone else thought it's better to be done. You have the vision of the language in the end!

from cone.

Ivo-Balbaert avatar Ivo-Balbaert commented on May 28, 2024

I too second fully the argumentation of @rempas. I too tried to start with Cone a couple of times, but turned away because I couldn't get it to run. So making the language usable for interested developers is by far the most important step you can take right now! It doesn't matter how feature incomplete or buggy it is at this stage. Users of a language are there to find bugs and give suggestions, and to help with the language once they understand enough of the compiler. From your [blog]https://pling.jondgoodwin.com/ people know that you have a deep understanding of programming languages; that's why they will want to investigate Cone, which seems a beautiful and innovative language.
Finding the time and energy is another matter, but slowly getting the bal running again and opening up for developers by migrating to LLVM12 and writing out how people can start using it is the most important step right now. I wish you the utmost success with Cone!

from cone.

jondgoodwin avatar jondgoodwin commented on May 28, 2024

Thank you for explaining your thought process on these issues.

If it is helpful to you: I am not interested in creating something new or modern or simple or complete. I am interested in creating something better, a professional tool that will stand the test of time, like C and C++. On a long journey like this, patience and discipline are critical. Until I get to critical mass, the team is one part-timer, me! To achieve success, I must invest my very limited time right now where it will be most impactful.

In that vein, you will be pleased to hear that my focus is not on first completing every possible feature (which will never happen). My focus is on completing what people commonly call the Minimum Viable Product (MVP). This is the minimal subset of the language necessary for any level of successful use. I do have a pretty clear idea on what this needs to be.

Let me offer a specific example: no language is meaningful without heap allocation of objects. In C, this is as simple as malloc. In Cone, this requires the the implementation of a significant part of the type system: references and regions and lifetimes. That's my immediate focus. Without this feature in place, Cone is in any meaningful way, largely useless to anyone wanting to do anything more than play on the fringes of its lesser capabilities.

To summarize, I am focusing my limited time on first achieving MVP status, not to aim for completion of lesser features (which is a forever journey). I hope that distinction makes more sense to you. So far, you have not convinced me that the language as it is today is worth anyone's time to play with beyond just using the ready-to-use Cone playground.

Obviously, I am not disputing that other things need to be done to make an MVP language attractive to try out, including an upgrade to LLVM. The question in my mind is how many times must I do that? The earlier I do that, the sooner I need to do it again. How much benefit does the community get right now vs. 6 months from now when the language is a lot closer to being passably (MVP) usable? If I do it now, and it does not leverage some sort of near-term success, I have just wasted energy on a distraction.

I will definitely invest time in this. Please convince me there is a big bang for the buck to do it now vs. 6 months from now, because you can show there is a pent-up demand for the language as it has been implemented up to now. A great argument in your favor is that @Ivo-Balbaert (hi!) just chimed in with his own encouragement. I will think on it. In the meantime, feel free both of you to chime in with more thoughts, given the above considerations.

If there are people genuinely interested in contributing given the state of the language now, that is enough of an inducement to focus on this.

from cone.

rempas avatar rempas commented on May 28, 2024

people know that you have a deep understanding of programming languages; that's why they will want to investigate Cone, which seems a beautiful and innovative language.

YES!!! Exactly that! I can't explain how "safe" I feel when in a project, the developer knows what he/she's doing! I also made some questions for the exact same reason to see if I should invest my time and after that I was convinced that I should.

I was also happily surprised seen how much Jonathan cares to keep the community happy with both replying to questions and trying to provide help as much as possible and also by consider hearing people's opinions about the project (which also shows how smart he is as this will help the language evolve in a good way) and doing discussion with them for the best!

from cone.

rempas avatar rempas commented on May 28, 2024

If it is helpful to you: I am not interested in creating something new or modern or simple or complete. I am interested in creating something better, a professional tool that will stand the test of time, like C and C++

Oh, you got my intentions wrong there. I understand your plan with the language and it seems great. All I said is that, until someone creates something very complex, the most advanced features will not be necessary to work with. I'm not saying that you shouldn't implement them but that they can wait a little bit in favor of other features or other things that are more necessary. Now what features are "advanced" and should wait and what features are more important, is up to you to decide

My focus is on completing what people commonly call the Minimum Viable Product (MVP)

This changes things! I mean, if you have a plan that's a good way to go in any case!

Please convince me there is a big bang for the buck to do it now vs. 6 months from now, because you can show there is a pent-up demand for the language as it has been implemented up to now

Why 6 months? Every 6-7 months, there is a new release of LLVM. You don't have to always update to the latest release but have something that will be accessible to anyone. You can simply take Debian is the root for that. Debian will be available for both people that want to install it or to use as a subsystem for Windows so you can guarantee accessibility for everyone. Debian now has down to LLVM9 which was released in 19 Sep 2019 which is 2 years ago (and still LLVM13 is not out). If you wait for LLVM13 (probably will be out in 1-2 months) then you will be fine for at least another 2 years for sure! In 2 years for now, you will probably reach MVP status (even if you keep working by yourself) so you then do the same procedure and you are fine for another 2 years. Then in the second time (after 4 years) you will sure reach MVP so then you will be able to prioritize LLVM and maybe update them fore common if you see fit.

However, keep in mind that you may be more skeptical about that and you may see a way for it not working in the end. So as you are more experienced, we should take your word for it

from cone.

Ivo-Balbaert avatar Ivo-Balbaert commented on May 28, 2024

Argument in favor for first migrating to LLVM 13:
The idea of working on an MVP is great, but it means another 6 months - 2 years period in which people will not be able to try out Cone (and starting to help grow the language).
25 people are watching this project on GitHub, this is already high for an emerging programming language. There will probably be some competent people in this group willing to help development when starting with Cone is made easier.
On the other hand I don't think it is needed to follow closely the LLVM update schedule, a lot of languages using LLVM lag behind (e.g. Crystal still uses LLVM 10).

from cone.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.