TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Six programming languages I’d like to see

481 点作者 johndcook将近 3 年前

107 条评论

thesuperbigfrog将近 3 年前
&gt;&gt; A serious take on a contract-based language<p>Ada has design-by-contract as part of the language:<p><a href="https:&#x2F;&#x2F;learn.adacore.com&#x2F;courses&#x2F;intro-to-ada&#x2F;chapters&#x2F;contracts.html" rel="nofollow">https:&#x2F;&#x2F;learn.adacore.com&#x2F;courses&#x2F;intro-to-ada&#x2F;chapters&#x2F;cont...</a><p>Since Ada is used for safety-critical systems programming you could argue that it is very serious about it.<p>&gt;&gt; And tool integration! One of the coolest things Eiffel sorta did was use contracts to infer tests. If you have contracts, you can use a fuzzer to get integration tests for free.<p>How about tools that extend design-by-contract to formal verification?<p><a href="https:&#x2F;&#x2F;learn.adacore.com&#x2F;courses&#x2F;intro-to-spark&#x2F;chapters&#x2F;01_Overview.html#" rel="nofollow">https:&#x2F;&#x2F;learn.adacore.com&#x2F;courses&#x2F;intro-to-spark&#x2F;chapters&#x2F;01...</a><p>SPARK is limited to a subset of Ada, so it is not without limitations, but it can be very useful depending on what you are trying to do.
评论 #32083053 未加载
评论 #32083041 未加载
评论 #32084185 未加载
评论 #32091643 未加载
评论 #32088616 未加载
评论 #32086461 未加载
评论 #32086007 未加载
评论 #32093102 未加载
评论 #32088396 未加载
评论 #32092209 未加载
showerst将近 3 年前
I&#x27;m a little surprised that nobody has pulled off the &quot;VB6 of javascript&quot;. I don&#x27;t mean one of the purely no-code products, but like a literal &quot;create a new page, drag a button, then double click it to hop into the code for a new route and a new component and go straight into the onclick handler&quot;.<p>Maybe that&#x27;s harder than I can imagine, or it exists and just isn&#x27;t a very good idea in practice (how would you even do responsive?) so it&#x27;s not that popular.<p>VB was a garbage language by modern standards but I always liked that they gave you a visual builder, but didn&#x27;t try to hide the coding from you too much.
评论 #32083262 未加载
评论 #32084705 未加载
评论 #32092452 未加载
评论 #32083307 未加载
评论 #32083634 未加载
评论 #32086111 未加载
评论 #32083400 未加载
评论 #32092572 未加载
评论 #32087751 未加载
评论 #32088648 未加载
评论 #32083401 未加载
评论 #32093242 未加载
评论 #32083323 未加载
评论 #32095161 未加载
评论 #32094285 未加载
slaymaker1907将近 3 年前
Depending on if you count it as a serious programming language, Racket has pretty much all the contract stuff. It has dedicated syntax for contracts, tight integration with the module system, and contract-random-generate attempts to generate a value satisfying a contract so writing an auto fuzzer wouldn&#x27;t be too hard. In fact, I think Racket&#x27;s system predates Clojure since there was the 2002 paper &quot;Contracts for Higher-Order Functions&quot; discussing it and Clojure first appeared in 2007.<p>The only reason I would ever use Clojure instead of Racket would be if I needed to work with the JVM ecosystem or the browser via Clojurescript (which are compelling reasons).<p>Totally agree about a good calculator language.
评论 #32092290 未加载
julian_sark将近 3 年前
As more of a Sys Admin &#x2F; scripting type, I felt happy and sad at the same time at the actual mention of Visual Basic.<p>VB is often scoffed at, and probably to an extend rightfully so.<p>But those (i.e. VB1 through to VB6) were the ONLY languages that I ever managed to create useful, finished tools and programs in. Maybe it&#x27;s part psychological, but I needed the approach where I created a neat UI first, got my methods pre-populated for me, and had something tangible to look at early in the process. Then went on to fill it with all with custom code. Yes, it&#x27;s BASIC, but it was extensible. People I knew wrote OCX and such control elements, and code routines in DLLs in C&#x2F;C++ and integrated that into VB projects, so the sky was still the limit.<p>Staring at an empty text document with possibly some header file statements never evoked the same creativity with me that VB did.<p>p.s. my proudest creation was a Windows 3.1 UI around the MS-DOS packing program &quot;arj&quot;, for those who remember. Had I been a better businessman, that might have predated WinZip :)
评论 #32084287 未加载
评论 #32084541 未加载
评论 #32089475 未加载
评论 #32089725 未加载
评论 #32087411 未加载
评论 #32084260 未加载
评论 #32086604 未加载
评论 #32084266 未加载
评论 #32088687 未加载
评论 #32084716 未加载
评论 #32089044 未加载
评论 #32086425 未加载
评论 #32091105 未加载
评论 #32088634 未加载
评论 #32084601 未加载
评论 #32086148 未加载
评论 #32089222 未加载
评论 #32090699 未加载
评论 #32085207 未加载
评论 #32087536 未加载
pointlessone将近 3 年前
&gt; A language designed around having first-class GUI support<p>Delphi and friends[1] is still out there. There&#x27;s also Lazarus[2] if you don&#x27;t want to fork off a few grands.<p>[1] <a href="https:&#x2F;&#x2F;www.embarcadero.com&#x2F;products" rel="nofollow">https:&#x2F;&#x2F;www.embarcadero.com&#x2F;products</a> [2] <a href="https:&#x2F;&#x2F;www.lazarus-ide.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.lazarus-ide.org&#x2F;</a>
评论 #32082786 未加载
评论 #32086002 未加载
评论 #32083168 未加载
评论 #32082325 未加载
jerf将近 3 年前
The reactive programming language one is really interesting. A compiler ought to be able to compile &quot;normal&quot; straight-line code into conventional efficient code. It&#x27;s hard to know how that sort of thing would &quot;pollute&quot; the rest of the code, though, like, will every program turn into a rat&#x27;s nest of dependencies such that it&#x27;s just impossible to manage or what? Hard to tell without trying, especially since developing such a language would also require significant effort into developing a standard library and best practices to go with it even if the language was in hand today. And one hell of a debugger. Circular dependencies are a problem, too; I&#x27;m inclined to ban them but that&#x27;s probably beyond what a type system can help you with, or at least, any type system I currently know, so it&#x27;s going to be an adventure.<p>Still, there&#x27;s a lot of things that would be more useful with such a language. In-memory highly-correct cache invalidation would become trivial code to write. In fact I think the cache would actually update itself live. Out-of-memory cache invalidation might be pretty easy. Certain auditing things would be easy. UIs would probably take some work to get right but would be interesting, at the very least. Game programming would also be interesting; a lot of game patterns would be incorporated into the language at that point.<p>Probably need to be lazy; I suspect proactively recalculating everything all the time would be a bad idea. Haskell has pushed lazy programming a long way, but &quot;re-thunkifying&quot; a previously calculated cell would be a new frontier.<p>Come to think of it, while I think the performance could be improved and you&#x27;d want to lift up to a full language eventually, I think a good Haskell programmer could bash together a prototype of this in a few days and start playing with it. It&#x27;s going to need a lot of playing with before someone casts it into concrete as a language specification and corresponding compiler and runtime.
评论 #32082866 未加载
评论 #32083697 未加载
评论 #32087836 未加载
评论 #32083125 未加载
评论 #32083946 未加载
评论 #32084395 未加载
评论 #32089673 未加载
评论 #32086552 未加载
Smaug123将近 3 年前
Mathematica is a decent general-purpose language (though closed-source) and its &quot;map the factorial function over the list&quot; is exactly the same length as the quoted J code:<p><pre><code> #!&amp;&#x2F;@l </code></pre> It has the same &quot;everything is a list&quot; problem - it&#x27;s really verbose at handling strings, for example, and last I checked its date-time handling was not only verbose but also [flat-out wrong](<a href="https:&#x2F;&#x2F;mathematica.stackexchange.com&#x2F;q&#x2F;239480&#x2F;30771" rel="nofollow">https:&#x2F;&#x2F;mathematica.stackexchange.com&#x2F;q&#x2F;239480&#x2F;30771</a>). But it <i>does</i> support the dynamism mentioned immediately below, if you use `SetDelayed` (`:=`) rather than `Set` (`=`).
cletus将近 3 年前
None of these are top of my list. Mine is a better PHP.<p>To be clear, I like PHP. It actually has many attributes that make it almost ideal as a Web development language, most notably:<p>1. Pretty much everything is request-scoped. This makes it a lot harder to leak resources when everything is torn down;<p>2. A stateless functional core. This avoids a lot of class loading that has dogged Java (as one example);<p>3. No ability to start threads. This is actually a positive. Most <i>application</i> code should avoid creating threads like the plague.<p>But PHP comes with a lot historical cruft. It&#x27;s type system is also primitive (Hack is a better example of this).<p>Where I think this could really shine is in data analysis (ie the numpy&#x2F;scipy realm).
评论 #32083849 未加载
评论 #32085390 未加载
评论 #32087337 未加载
评论 #32091490 未加载
dfan将近 3 年前
Inform 7 is the closest thing I can think of to &quot;everything is a graph&quot;. Basically, objects in the world are vertices and relations are edges. When you first encounter relations they don&#x27;t necessarily seem that exciting, but it turns out that having relationships between objects be a first-class concept really changes the way you think about and design systems.
评论 #32086279 未加载
mazesc将近 3 年前
Ada is already mentioned here.<p>You also want to look at Dafny for a contract-based language: <a href="https:&#x2F;&#x2F;github.com&#x2F;dafny-lang&#x2F;dafny" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;dafny-lang&#x2F;dafny</a><p>Since it has verification support it also covers the second point about semantic relations.
评论 #32084085 未加载
评论 #32088123 未加载
danaugrs将近 3 年前
Nice article! I&#x27;m building a language (<a href="https:&#x2F;&#x2F;flame.run&#x2F;" rel="nofollow">https:&#x2F;&#x2F;flame.run&#x2F;</a>) in Rust that aims to have WebGPU+GUI support built-in. I&#x27;m playing with refinement types, which you effectively described in the second-to-last section. I&#x27;m not familiar with contract-based languages (other than Solidity), but I think refinement types would allow specifying function parameter requirements in a similar fashion to what you described in your contract-based language section.
lkrubner将近 3 年前
&gt; A serious take on a contract-based language<p>In Shen, the contract rules applied on each function are themselves a Turing complete language::<p><a href="https:&#x2F;&#x2F;thestrangeloop.com&#x2F;2014&#x2F;shen-a-sufficiently-advanced-lisp.html" rel="nofollow">https:&#x2F;&#x2F;thestrangeloop.com&#x2F;2014&#x2F;shen-a-sufficiently-advanced...</a><p><a href="https:&#x2F;&#x2F;shenlanguage.org" rel="nofollow">https:&#x2F;&#x2F;shenlanguage.org</a><p>&quot;static type checking based on sequent calculus&quot;<p>&quot;one of the most powerful systems for typing in functional programming&quot;
评论 #32093374 未加载
carapace将近 3 年前
Joy (implemented in Prolog) could tick some of these boxes.<p>&gt; window2 is an optimized version of window1 and should have the same outputs for every input. I should be able to encode that in the language, and have the tooling generate checks showing the two are the same, and also run benchmarks testing if the optimized version actually is faster.<p>That should be possible with Joy, it&#x27;s certainly something I want to explore. The interesting semantic relationships are those that let the machine automatically deduce optimizations<p>&gt; I also like the idea of modifying function definitions at runtime. I have these visions&#x2F;nightmares of programs that take other programs as input and then let me run experiments on how the program behaves under certain changes to the source code. I want to write metaprograms dammit<p>Lotta metaprogramming in Joy. Many functions work by building new functions and running them, it&#x27;s a natural idiom in Joy.<p>- - - -<p>&gt; A language designed around having first-class GUI support<p>Red? ( <a href="https:&#x2F;&#x2F;www.red-lang.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.red-lang.org&#x2F;</a> )<p>&gt; Visual Interface Dialect ... is a dialect of Red, providing the simplest possible way to specify graphic components with their properties, layouts and even event handlers. VID code is compiled at runtime to a tree of faces suitable for displaying.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;red&#x2F;docs&#x2F;blob&#x2F;master&#x2F;en&#x2F;gui.adoc" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;red&#x2F;docs&#x2F;blob&#x2F;master&#x2F;en&#x2F;gui.adoc</a><p>&gt; You can’t work with strings, json, sets, or hash maps very well, date manipulation is terrible, you can barely do combinatorics problems, etc etc etc. I want a language that’s terse for everything.<p>That also sounds like Red.
krmboya将近 3 年前
Imagine if the computing world would have standardized on Lisp and Smalltalk 40 years ago.<p>If Alan Kay had got microprocessor companies to steal the Xerox microcode design like they got Apple to steal the GUI design, then the genius compiler engineers optimized the the heck out of it all.<p>I can only shudder at what the supercomputer in my pocket would be capable of.
评论 #32087387 未加载
评论 #32090876 未加载
评论 #32088732 未加载
评论 #32089578 未加载
kitd将近 3 年前
I&#x27;d like to see a language that can clearly model concurrency using a Petri Net-like structure, ie a data flow language with flexible state&#x2F;transition handling.<p>Technically, the runtime is the easy part (relatively speaking). Modelling an array of swimlanes on a plain-text 2D page is the real challenge here IMO.
评论 #32083930 未加载
评论 #32085659 未加载
Banana699将近 3 年前
&gt;A really dynamically-typed language<p>Raku, previously known as Perl6, has this[1].<p>sub MAIN(Int $a, Int $b where 10 &lt; $a &lt; $b &gt; 20) { say &quot;OK: $a $b&quot;; }<p>You can also pull out the &quot;Where&quot; clause to ouside the function and make it define a new type.<p>Raku is a very awesome language in general, for more reasons than one.<p>[1] <a href="https:&#x2F;&#x2F;andrewshitov.com&#x2F;2020&#x2F;08&#x2F;14&#x2F;the-pearls-of-raku-issue-5-the-where-clause&#x2F;" rel="nofollow">https:&#x2F;&#x2F;andrewshitov.com&#x2F;2020&#x2F;08&#x2F;14&#x2F;the-pearls-of-raku-issue...</a>
评论 #32087902 未加载
Lichtso将近 3 年前
About &quot;Everything is a Graph&quot;, I tried to design programming languages for graph processing a few year back. The problem here is the &quot;language&quot; part as language always implies sequence (because that is what text is). Sequences of statements just don&#x27;t cut it. In order to efficiently work with graphs, you need to work in graphs. Thus, it becomes a program graph rather than a programming language. And at that point you run into issues of general tooling. Every single tool ever invented around programming is used in combination with text and sequences.<p>In retrospective it is funny how everybody implicitly assumes that the next big thing will be yet another programming language. And I am not talking about no-code or AI code synthesis.
评论 #32090821 未加载
评论 #32095426 未加载
评论 #32091406 未加载
评论 #32094612 未加载
vchuravy将近 3 年前
&gt; A better calculator language<p>Especially with reactive programming as an ask there, I would recommend Julia with Pluto.jl (Pluto is a reactive notebook).<p>&gt; A really dynamically-typed language<p>Julia ;) It is really dynamic, has meta-programming (macros + staged functions), solid semantics around eval&#x2F;invokelatest that still allow for optimizations and you can add types at runtime (not modify them though).
评论 #32088258 未加载
fjfaase将近 3 年前
If you mean with a Graph language, a complex data structure language, you might have a look at <a href="https:&#x2F;&#x2F;github.com&#x2F;FransFaase&#x2F;DataLang" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;FransFaase&#x2F;DataLang</a> which gives some ideas about modelling complex data structures and where I talk about the different kind of reference that you might want in such a language.
geoffeg将近 3 年前
I&#x27;d like to see more languages with built-in, language level support for unit tests. Pyret (<a href="https:&#x2F;&#x2F;www.pyret.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.pyret.org&#x2F;</a>) does this but is considered a &quot;learning language&quot;. I&#x27;m aware that to many people co-locating units tests with the functions they&#x27;re testing is &quot;bad&quot; but I find it to be quite the opposite. The two are so tightly coupled that having the unit tests in a separate file, sometimes in a separate source tree, is counterintuitive to me.
评论 #32083554 未加载
评论 #32082978 未加载
评论 #32083267 未加载
评论 #32087073 未加载
评论 #32084756 未加载
api将近 3 年前
I&#x27;d love to see a language with first class relational data types. This would basically be Turing-complete SQL with better syntax and obviously with a very modern language outside the relational stuff. Bonus points for providing hooks to allow transparent persistence of data, making the program and its database potentially the same thing and allowing easy persistent state programs with complex data.<p>This could theoretically be added to other languages with libraries (with varying elegance depending on the language), but a real first class language would be carefully designed so that everything is serializable and deserializable with excellent performance. Things that fundamentally <i>are</i> state like network connections would also have to be carefully handled in some way where their essence was persisted such that the program could restore them and rebuild their state.<p>This would pretty much give you an ORM without the impedance mismatch and would eliminate a <i>TON</i> of &quot;CRUD&quot; code and boilerplate.
评论 #32084410 未加载
评论 #32084159 未加载
评论 #32085480 未加载
thetwentyone将近 3 年前
The &quot;reactive calculator&quot; language the author wants is just Julia running in a Pluto notebook: <a href="https:&#x2F;&#x2F;github.com&#x2F;fonsp&#x2F;Pluto.jl" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;fonsp&#x2F;Pluto.jl</a>
onychomys将近 3 年前
&gt; When I’m trying out lots of different equations, keystokes matter a lot.<p>That&#x27;s a pretty weird way to do math, honestly. Shouldn&#x27;t you figure out what equation you need and then just type it? If you&#x27;re off by one or whatever, adjust it then, you&#x27;re still only typing it twice.
travisgriggs将近 3 年前
Elixir function marching feels kind of like contracts. You specify different variants of the same function for different contracts of what the inputs thrown at it are.<p>I found that for much of my code it really separated the “where to next” from the “what to do”. And I became acutely aware of how many of the statements in other languages are more about “where does the code go next” and less about getting stuff down.
评论 #32088079 未加载
patrec将近 3 年前
&gt; and basically no languages have an implication operator<p>Prolog does, but more intriguingly, so does Nix!
评论 #32087422 未加载
评论 #32086356 未加载
howling将近 3 年前
His python code can be shorten to<p><pre><code> from math import * prod(map(factorial, l)) </code></pre> which isn&#x27;t much longer than his J code especially if you count the number of tokens rather than the number of characters as the J code uses ridiculously terse names.
评论 #32089179 未加载
gonzo41将近 3 年前
I&#x27;ll keep my moaning about VB6 and JavaFX to myself. These days I think HTML5 and a decent theme is probably enough for everything. Yes it can sometimes suck, but there doesn&#x27;t seem to be much love for heavy app development anymore.
评论 #32083033 未加载
评论 #32094684 未加载
shakna将近 3 年前
&gt; I also like the idea of modifying function definitions at runtime. I have these visions&#x2F;nightmares of programs that take other programs as input and then let me run experiments on how the program behaves under certain changes to the source code. I want to write metaprograms dammit<p>I&#x27;ve been working on an extremely dynamic programming language for a while. Ricing away on the syntax to make it as flexible as possible, whilst maintaining readability.<p>One of the things that already works is some insane metaprogramming. It doesn&#x27;t really have functions. It has callable lists of things. Which means you can modify them at runtime (still working on the names for the functions for doing that).<p>It is stack-based, so it&#x27;s a little quirky, but as a taste of some very simple meta-programming:<p><pre><code> block varname: add! 1 $ $varname : $varname end inc-env: a: 1 inc-env! a </code></pre> Bare-words are a symbol-type. So they only resolve from the environment when you ask for it with the $ instruction, which is how the above works. A little tedious, but does enable all kinds of dynamism.
评论 #32083156 未加载
评论 #32083134 未加载
keybored将近 3 年前
Yes please to contracts.<p>Dependent types and things like that are probably great. Being able to <i>prove</i> correctness is great. But I would settle for a way to declaratively express invariants and then let the language for the most part take care of inserting checks (in debug or using a special mode perhaps, or all the time) and generating tests&#x2F;property tests. Why isn’t this more of a thing?
评论 #32090945 未加载
评论 #32083660 未加载
dan-robertson将近 3 年前
It’s not exactly a language but the Emacs calculator (aka GNU Calc) can do a lot of the things J does for the author. Product of factorials would be:<p><pre><code> v M ! v R * </code></pre> Where the v may be capitalised if you like and the spaces are the way the commands are written but aren’t typed. That decomposes into some easy mnemonics: Vector Map factorial, Vector Reduce multiplication.<p>It has a bunch of mathematical features, a quick interface for plotting simple graphs (with gnuplot), some symbolic algebra, and it sort-of has the reactive feature too. (I think there’s also a mode for using it in files).<p>Date handling is ok but simple (a date&#x2F;time is internally represented as a Julian day so if you add 1 to a date&#x2F;time you get the next day; times go into the fractional part. Leap seconds &#x2F; time zones aren’t handled. There is an option to configure when your calendar switched from Julian to Gregorian.<p>It’s usually fast enough for what I use it for but it can be limited by performance.
OneWingedShark将近 3 年前
The items &quot;A serious take on a contract-based language&quot; &amp; &quot;A language with semantic relations&quot; are covered pretty nicely by Ada&#x27;s SPARK subset&#x2F;tools... and the really great thing is that the &quot;aspects&quot; are part of the code and don&#x27;t &quot;go stale&quot; like annotated comments do.
7thaccount将近 3 年前
Interesting to see the complaints on J. I&#x27;ve been playing with the Q language (basically K with some sugar) that is part of KDB+ and I think it solves all your problems in that it is a lot cleaner&#x2F;simpler, very fast, support for dictionaries, strings, JSON, datetimes (it is a database too), very terse file IO...etc. The only drawback is it&#x27;s a commercial product. Who knows though. Maybe they would give you a pretty cheap license if you agree to use it mostly like a calculator (not for large-scale financial analysis). The whole install was basically a single executable and a license file. Very elegant. The doc is finally pretty good too.<p>Edit: I tried using J and the install was pretty large iirc and the whole language is just too big and complicated. I know you can do cool stuff with it, but it just seemed to me that the cost was too high relative to benefit. Your mileage may vary.
eatonphil将近 3 年前
<p><pre><code> input = 1 out1: input + 1 #out1 is now 2 input = 4 #out1 is now 5 out2: out1.replace(+, -) #out2 is now 3 # let&#x27;s pull an APL input = 4 2 #out1 is 5 3 #out2 is 3 1 </code></pre> The reactive programming idea a la Excel but text-based looks really neat. I&#x27;d love to play around with that kind of thing.
评论 #32082755 未加载
评论 #32082323 未加载
评论 #32082512 未加载
评论 #32082967 未加载
adenozine将近 3 年前
Pyret has interesting contract functionality.<p>Lua is based around tables, which, aren’t quite graphs but seem relatively close enough. What is a graph if not a collection of points associated with their edges?<p>As far as semantic function relations, I could swear Ada has something like this, but it’s been more than a decade since I’ve touched any.
quickthrower2将近 3 年前
“A serious take on a contract-based language“<p>Not ambitious enough. We already have dependent type systems and what I will call “property based types” since I forget the proper name e.g. <a href="https:&#x2F;&#x2F;ucsd-progsys.github.io&#x2F;liquidhaskell-blog&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ucsd-progsys.github.io&#x2F;liquidhaskell-blog&#x2F;</a>.<p>The compiler can check anything from silly out of bounds conditions to more complex assertions.<p>Even without that, a good type system will allow you to alias types but have a constructor do a check. Once you use the Percentage0_100 type you know that it must be in that range, and the method doesn’t need to check it again.<p>In think Haskell is “too much” for a lot of teams, but sprinkling in some compile time assertions and making that ergonomic with linting and so on would be a boon on par with async&#x2F;await.<p>“Unit test?” no need, I have a proof!
评论 #32090883 未加载
codesnik将近 3 年前
All six features listed are very redundant or useless, in my opinion.<p>Contracts? how they&#x27;re different or less verbose than plain asserts? what they do better?<p>&quot;reactive programming&quot;? if remove that strange code editing &quot;replace&quot;, just a chain of definitions instead of variables in, say, ruby, gives you basically the same effect.<p>etc.<p>What I&#x27;d love to see is a language with a first class grammars to replace many uses of regexes or badly written DSL&#x27;s, like what Perl6 tried to do.<p>and, somewhat related (both are using backtracking), adoption of some of the ideas of <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Icon_(programming_language)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Icon_(programming_language)</a>, not on a whole language level, but in some scoped generator context would be nice for some tasks I had to do.
评论 #32083294 未加载
评论 #32085176 未加载
评论 #32083256 未加载
评论 #32084135 未加载
评论 #32083367 未加载
评论 #32083277 未加载
评论 #32083319 未加载
评论 #32088300 未加载
评论 #32083945 未加载
评论 #32089101 未加载
评论 #32088529 未加载
评论 #32090925 未加载
评论 #32083261 未加载
abrudz将近 3 年前
<p><pre><code> input = 1 out1: input + 1 #out1 is now 2 input = 4 #out1 is now 5 out2: out1.replace(+, -) #out2 is now 3 # let&#x27;s pull an APL input = 4 2 #out1 is 5 3 #out2 is 3 1 </code></pre> Not quite as sleek syntax, but in APL with my Lazy library[1]<p><pre><code> input ← 1 ]lazy out1 ← input + 1 out1 2 input ← 4 out1 5 ⎕FX&#x27;out1&#x27; &#x27;\+&#x27;⎕R&#x27;out2&#x27; &#x27;-&#x27;⎕NR&#x27;out1&#x27; out2 3 input ← 4 2 out1 5 3 out2 3 1 </code></pre> [1] <a href="https:&#x2F;&#x2F;github.com&#x2F;abrudz&#x2F;Lazy" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;abrudz&#x2F;Lazy</a>
bjourne将近 3 年前
I want a language for safe collaboration. Suppose I create a GPL-licensed library for decoding mpeg4 that I publish somewhere. Someone should be able to fix a bug in that library and publish a new with minimal involvement from my side and minimal overhead work. I shouldn&#x27;t have to review pull requests or anything. It should all be automatic and the language should protect against malicious users inserting flawed code.<p>Copyright would be handled using a block chain so every commit&#x27;s author would be publicly visible to users of the library.<p>The &quot;source code&quot; would be stored as a call-flow graph and perhaps nodes would have different permissions to sandbox the effect of untrusted contributors changes.
评论 #32099481 未加载
评论 #32089212 未加载
woojoo666将近 3 年前
I&#x27;m curious what the author means by &quot;everything is a graph&quot;. Are graphs the primitives of the language? How are graphs defined or specified by the programmer, without using an even lower level primitive?<p>The author says:<p>&gt; Give me a language where key-value maps are emulated with directed bipartite graphs<p>So this means you can&#x27;t define graphs using key-value dictionaries (like Smalltalk or Javascript with their objects primitives). So how exactly are these graphs defined? RDF format?<p>Something I&#x27;ve found while trying to design languages is that the hardest part is running into contradictions and circular logic. And I feel this &quot;everything is a graph&quot; idea will very quickly run into this issue.
评论 #32091394 未加载
评论 #32090497 未加载
hetzenmat将近 3 年前
&gt;&gt; Everything is a Graph &gt;&gt; Lisp: everything’s a list<p>Actually, the universal &#x27;cons&#x27; cell data type of LISP (which is used to build lists) allows to represent graphs. Take, for example, Common Lisp. There are read-macros which make this possible: The expression #1=(hello . #1#) builds a circular list that only contains the symbol &quot;hello&quot; [1]. This example can be extended to build graphs.<p>[1]: <a href="https:&#x2F;&#x2F;letoverlambda.com&#x2F;index.cl&#x2F;guest&#x2F;chap3.html#sec_5" rel="nofollow">https:&#x2F;&#x2F;letoverlambda.com&#x2F;index.cl&#x2F;guest&#x2F;chap3.html#sec_5</a>
zelphirkalt将近 3 年前
&gt; The standard bearer for contracts used to be Eiffel, which people stopped caring about in the mid-90’s. Nowadays the only mainstream language to get serious about contracts is Clojure. Most languages have a contracts library, which mean the language doesn’t have affordances to use contracts well. Take the predicate is_sorted(l)<p>Some languages though have contracts as a library, but that library uses tools of the language, to actually change the language. Languages with capable macro systems! Just because something is a library, that does not mean, that it will not integrate into the language, even beyond a library function level. In language with a capable macro system, one can create new keywords and forms, which are just as much part of the language, as predefined things. It allows to create ones &quot;affordances&quot;. With all the interest in language features, I am surprised, that this was overlooked.<p>The post inspired me to try myself at creating a macro in Scheme &#x2F; GNU Guile, which implements the &quot;requires&quot; and &quot;ensures&quot; idea, although evaluating at runtime: <a href="https:&#x2F;&#x2F;notabug.org&#x2F;ZelphirKaltstahl&#x2F;guile-examples&#x2F;src&#x2F;d749de48307cebe279215ab5df50853c9d100b2f&#x2F;macros&#x2F;contract.scm" rel="nofollow">https:&#x2F;&#x2F;notabug.org&#x2F;ZelphirKaltstahl&#x2F;guile-examples&#x2F;src&#x2F;d749...</a>
yencabulator将近 3 年前
For contract-based programming, I&#x27;m personally planning on experimenting with Prusti: <a href="https:&#x2F;&#x2F;github.com&#x2F;viperproject&#x2F;prusti-dev" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;viperproject&#x2F;prusti-dev</a><p>The withdraw example would look something like<p><pre><code> impl Account { #[requires(amount &lt;= self.balance)] #[ensures(self.balance &gt;= 0)] pub fn withdraw(&amp;mut self, amount: uint) { ... } } </code></pre> and Prusti has a good story for going from this to larger proofs.
thom将近 3 年前
I would love to see a programming language with some sort of bitemporal data store built in. Let me define dataflow graphs, including highly stateful logic over streams of data, but let me go back and change data, or fix bugs and replay from the beginning of time and view the state of the system (in a nice REPL) at any point in time. Gimme a fast, distributed runtime that can scale to any level of complexity or data size.<p>I can imagine it being Materialize who build this first but in my heart of hearts I’d love it not to be SQL.
di4na将近 3 年前
I want an IaC and nixos level language with prolog inspiration. Let me express how to go from fact to goals with constraints.<p>It would probably make more sense than HCL or Pulumi.<p>Agents based language are close in theory but they are really targeted at specific simulation and not at explaining what went wrong.<p>It would also make it easier to do partial application and resumption of it. And probably make constraints for security easier.<p>Probably make composition of infra level work easier too.
评论 #32091828 未加载
PhineasRex将近 3 年前
The dynamic typing example doesn&#x27;t have anything to do with dynamic typing and is in fact already a feature of some statically-typed programming languages.
评论 #32084625 未加载
评论 #32100450 未加载
aidenn0将近 3 年前
As TFA mentions, Smalltalk probably does it as well, but Common Lisp has all of the features for &quot;A <i>really</i> dynamically typed language&quot;
nudpiedo将近 3 年前
well since all graphs can be represented as binary graphs and bgs can be conmfortably represented in lists, Lisp is de facto the friendliest graph language. But I agree with the sentiment, specially in regards the syntax... something new has to be imagined in order to representa language oriented toward graph traverse and manipulation.
评论 #32096050 未加载
amelius将近 3 年前
Give me a language like Rust that allows me to define an efficient concurrent garbage collector as a library.
评论 #32087525 未加载
评论 #32084765 未加载
alhirzel将近 3 年前
Re the &quot;everything is a graph&quot; idea, Mathematica has been building primitives for some time toward this idea where literally everything is a graph: <a href="https:&#x2F;&#x2F;www.wolframphysics.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.wolframphysics.org&#x2F;</a>
km3r将近 3 年前
We use an internal language at work thats a graph based language with first party GUI support. Some interesting info about it:<p>* There is just a few primitive node types (Class, Method, Attribute, Relationship, GUI Bucket) with the rest of the system being derived off of that.<p>* Underneath is a replaceable layer of java (+js&#x2F;html for UI).<p>* Still not sure if it&#x27;s quite front or back end code, as it contains business logic, GUI info, and largely runs on the server.<p>* Back end improvements happen automatically and system wide. The limiting nature of the graph ensures minimal regressions.<p>* Most of the SKU product code is contained within this graph, making for definable relationships between any part of the code.<p>* Internal languages mean lots of internal tools that enable better management of the graph.
xputer将近 3 年前
I would like to see a proper language with built in support for Unix Shell commands. Similar to bash or perl with a use Shell import, but without the limitations of bash or the craziness of perl.<p>I really like the idea of zx, but still doesn&#x27;t look clean enough to me.
评论 #32089453 未加载
funcDropShadow将近 3 年前
This list of wanted language features is quite interesting.<p>&gt; A serious take on a contract-based language<p>As the article itself notes Clojure does support contracts in the language and with libraries. But there has been a ton of research about that, e.g. JML [1].<p>&gt; A language with semantic relations<p>They can be expressed in contracts (e.g. Clojure) or with property-based test frameworks (e.g. Haskell, Clojure, and many others nowayday).<p>&gt; Everything is a Graph<p>See graph rewriting, e.g. [2]. That was just my first google hit with the proper search term.<p>&gt; A better calculator language<p>That idea looks to me like automatic transformation from offline to online algorithms [3]. I am not aware of any compilers being able to do that. But dataflow graphs can be used to design such systems. A list of such languages or libraries (e.g. for Clojure) can be found in this Stackoverflow article [4]<p>&gt; A really dynamically-typed language<p>As some other answers here already mentioned modern static type systems are able to express, new types at runtime, e.g. with Scala&#x27;s path dependent types. Again Clojure has an interesting entry here: clojure.spec [5], a runtime represented specification language, which can be used together with contracts or to formulate proeprty-based tests, or anything else you would like to do with it.<p>Btw, I&#x27;ve only toyed with Clojure so far and I used to be an avid proponent of Haskell&#x2F;ML-style static type systems.<p>[1]: <a href="https:&#x2F;&#x2F;www.cs.ucf.edu&#x2F;~leavens&#x2F;JML&#x2F;index.shtml" rel="nofollow">https:&#x2F;&#x2F;www.cs.ucf.edu&#x2F;~leavens&#x2F;JML&#x2F;index.shtml</a><p>[2]: <a href="https:&#x2F;&#x2F;link.springer.com&#x2F;chapter&#x2F;10.1007&#x2F;978-3-642-32211-2_12" rel="nofollow">https:&#x2F;&#x2F;link.springer.com&#x2F;chapter&#x2F;10.1007&#x2F;978-3-642-32211-2_...</a><p>[3]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Online_algorithm" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Online_algorithm</a><p>[4]: <a href="https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;461796&#x2F;dataflow-programming-languages" rel="nofollow">https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;461796&#x2F;dataflow-programm...</a><p>[5]: <a href="https:&#x2F;&#x2F;clojure.org&#x2F;guides&#x2F;spec" rel="nofollow">https:&#x2F;&#x2F;clojure.org&#x2F;guides&#x2F;spec</a>
TOGoS将近 3 年前
As far as graph-based languages and languages with arbitrary metadata and relationships between objects are concerned, I&#x27;ve been mulling over a language where expressions are represented as RDF graphs and that has built-in support for manipulating RDF graphs. I&#x27;ve use the concepts as an intermediate representation for [mostly numeric] functional expressions in a few different systems (including Factorio&#x27;s map generator), but haven&#x27;t yet had the motivation to really flesh it out into a full-blown language. <a href="https:&#x2F;&#x2F;github.com&#x2F;TOGoS&#x2F;TOGVM-Spec" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;TOGoS&#x2F;TOGVM-Spec</a>
directionless将近 3 年前
For calculator languages, I think there are several choices. Depends a bit on what you know, and what you need...<p>Frink (<a href="https:&#x2F;&#x2F;frinklang.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;frinklang.org&#x2F;</a>) has been around for ages, and is rooted in physical unit conversions<p>Calca (<a href="http:&#x2F;&#x2F;calca.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;calca.io&#x2F;</a>) has come up a handful of times. It looks pretty reasonable<p>R, if that&#x27;s your flavor<p>Anything with a REPL. Though the OP suggests these are cumbersome, I&#x27;d counter argue that anything you know well is usually more efficient than learning something new.<p>A very long list of commercial tools: Matlab, Mathematica, WolframAlpha, STS, SAS, etc
NightMKoder将近 3 年前
This is very nonambitious, but I’d love to see a Clojure with less LISP. That is - something like JS syntax but with immutable by default types and const only bindings. Macros would be great too, even if they require a different compilation mode. Top it off with great standard library that has _all_ the collection operations you’ll ever need (e.g. partition-all and dedupe in Clojure). nREPL support or the like is a hard requirement.<p>Spending the last 6 years writing Clojure has been great. That said, the parens don’t add positively to the experience. They feel like semicolons in C - “the compiler is too dumb to understand this so I have to help it.”
评论 #32093481 未加载
评论 #32093313 未加载
评论 #32093685 未加载
AtNightWeCode将近 3 年前
What I really miss is a lang that can be used to write code efficiently on smartphones.
bern4444将近 3 年前
&gt; A language with semantic relations<p>This is a cool idea especially around a formal structure to express relationships between parts of your code. As to the example in the article on this, it seems property based testing is a decent way to achieve something like this with existing languages.<p>A simple example of a property based test for a `const add = (a, b) =&gt; a + b` function would be that the result of the invocation is always larger than the arguments IE<p><pre><code> expect(add(a, b)).toBeGreaterThan(a); expect(add(a, b)).toBeGreaterThan(b); </code></pre> And then you can randomly generate or fuzz the values for a and b but the test should always pass
ivolimmen将近 3 年前
&gt; I miss VB6.<p>Me too. But there is something nice on Linux called GAMBAS: <a href="http:&#x2F;&#x2F;gambas.sourceforge.net&#x2F;en&#x2F;main.html" rel="nofollow">http:&#x2F;&#x2F;gambas.sourceforge.net&#x2F;en&#x2F;main.html</a>
borissk将近 3 年前
A guy I know actually did make a graph programming language, implemented on top of neo4j. It was very slow, but he did use it successfully for analyzing SQL stored procedures and finding fraudulent transactions.
lcall将近 3 年前
What I would like to see is a language that as easy to learn &amp; use as python&#x2F;ruby&#x2F;etc, but based on rust and rust-like, using rust libraries if at all possible, with garbage collection, so one can have an easy entrypoint for anyone who wants that, and if ever needing the full performance etc of Rust, change a compiler switch (or something) and the full Rust kicks in.<p>In other words, a step-by-step developer growth process from simple to hard, maybe 2-4 levels, and you never have to throw away what you already learned and start over, when going to the next step.
评论 #32087590 未加载
评论 #32089088 未加载
andrewshadura将近 3 年前
A language designed around having first-class GUI support: Tk dialect of Tcl
nika1975将近 3 年前
Dart is a language optimized for use in the Flutter GUI framework. Well done.
abdellah123将近 3 年前
&gt; A language designed around having first-class GUI support That&#x27;s Imba <a href="https:&#x2F;&#x2F;imba.io" rel="nofollow">https:&#x2F;&#x2F;imba.io</a><p>And it&#x27;s fast, enjoyable and productive
评论 #32086685 未加载
WalterBright将近 3 年前
D has contracts built in.<p><a href="https:&#x2F;&#x2F;dlang.org&#x2F;spec&#x2F;function#contracts" rel="nofollow">https:&#x2F;&#x2F;dlang.org&#x2F;spec&#x2F;function#contracts</a>
sebastianconcpt将近 3 年前
For the <i>really-dynamically typed</i> language, that for sure is covered in Smalltalk.<p>And for the first-class GUI support, in its own way too, but also Swift in XCode is very very good.
评论 #32089199 未加载
mjb将近 3 年前
The language I want is a specification language (a bit like Pluscal or P) which allows me to specify distributed system behavior, then ask both correctness (liveness&#x2F;safety) questions and quantitative behavior questions. I wrote a bit about it here: <a href="https:&#x2F;&#x2F;brooker.co.za&#x2F;blog&#x2F;2022&#x2F;06&#x2F;02&#x2F;formal.html" rel="nofollow">https:&#x2F;&#x2F;brooker.co.za&#x2F;blog&#x2F;2022&#x2F;06&#x2F;02&#x2F;formal.html</a>
linkdd将近 3 年前
For a contract based language and a &quot;really dynamically typed language&quot;, I&#x27;m working on <a href="https:&#x2F;&#x2F;letlang.dev" rel="nofollow">https:&#x2F;&#x2F;letlang.dev</a><p>And it&#x27;s because I haven&#x27;t thought yet about how to do static type checking with such a feature.<p>I haven&#x27;t got any time to work on it in the past few weeks, and I&#x27;m the only dev (would really love some help). So, it will be ready when it will be ready :P
tasty_freeze将近 3 年前
For reactive programming, verilog does that as its primary function. You can write imperative code as well. But it is a very primitive language that doesn&#x27;t even support structures and loads of historical cruft. Systemverilog improves on it greatly. VHDL is contemporaneous with verilog and is much more principled because it was modeled on ADA. I have never heard of anyone using verilog for anything other than modeling logic.
guelo将近 3 年前
The reactive programming idea is implemented by the Kotlin Compose project as a compiler plugin so it behaves as a language feature. Compose is confusingly named in that there is a more popular Android UI toolkit with the same name built on top of the reactive feature. But Compose the compiler plugin is available by itself without the UI thing.<p>I&#x27;ve been playing around with it and find it can really simplify a lot of code.
ksherlock将近 3 年前
Some versions of K have reactive programming -- they call them views.<p>normal assignment:<p>var : expression<p>view:<p>var :: expression<p><a href="https:&#x2F;&#x2F;code.kx.com&#x2F;q&#x2F;learn&#x2F;views&#x2F;" rel="nofollow">https:&#x2F;&#x2F;code.kx.com&#x2F;q&#x2F;learn&#x2F;views&#x2F;</a><p><a href="https:&#x2F;&#x2F;code.kx.com&#x2F;q4m3&#x2F;9_Queries_q-sql&#x2F;#911-views" rel="nofollow">https:&#x2F;&#x2F;code.kx.com&#x2F;q4m3&#x2F;9_Queries_q-sql&#x2F;#911-views</a>
marcus_holmes将近 3 年前
+1 for &quot;I miss VB6&quot;<p>Using a dynamic web tooling product at the moment, and at first I was enthusiastic, but it&#x27;s crippled compared to VB6
hota_mazi将近 3 年前
I&#x27;d like to see a language with baked in support for dependency injections, so that my functions can take two types of parameters: its &quot;real&quot; parameters, which it needs to perform its function, and &quot;dependencies&quot;, that are passed implicitly by the runtime.<p>Basically, a formalization of Dagger&#x2F;Guice into a language.
评论 #32085727 未加载
评论 #32083686 未加载
评论 #32083066 未加载
omginternets将近 3 年前
Is there a relationship between contracts and proof languages like Idris, or are these completely different approaches?
ape4将近 3 年前
I thought Pascal&#x27;s ability to specify the bounds of an array were cool:<p><pre><code> vector = array [1..25] of real;</code></pre>
评论 #32083625 未加载
gwright将近 3 年前
&gt; A better calculator language<p>See Calca: <a href="http:&#x2F;&#x2F;calca.io" rel="nofollow">http:&#x2F;&#x2F;calca.io</a>
piggybox将近 3 年前
I miss VB too. It&#x27;s amazing how simple and intuitive it was comparing to how we create UIs nowadays.
notdan将近 3 年前
Is there a good programming language and environment for kids? I started learning coding in my own around 10 yrs old with qbasic. Scratch is super aawesome, but what is the next level up from that that is actually typing the code out instead of moving puzzle pieces?
评论 #32086941 未加载
评论 #32089630 未加载
yewenjie将近 3 年前
Recently I have been shopping for a configuration language that has static types and is easy-to-use and exports to common formats. Dhall came close but I was surprised to find that it does not support recursive types in a simple way. Maybe I should just use Haskell.
评论 #32088937 未加载
okonomiyaki3000将近 3 年前
Is there a language where everything is observable? Like RxJS all the way down. Can that exist?
d--b将近 3 年前
The one I want to see is an analytics PL where dataframes are 1st class citizen. The only ones that do that right now are SQL. But really pandas shouldn&#x27;t be a library in python, it should be in python itself with a specific syntax
评论 #32082891 未加载
评论 #32088966 未加载
评论 #32083420 未加载
评论 #32082886 未加载
评论 #32084353 未加载
评论 #32082916 未加载
EdwardCoffin将近 3 年前
With respect to the <i>everything is a graph</i> language, I think SetL [1] is pretty close.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SETL" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SETL</a>
Ericson2314将近 3 年前
I&#x27;m sorry but these all seem superficial to me.<p>E.g. contracts language could mean better understanding of substructural stuff so we can handle &quot;real resources&quot;. But coming up with some syntax for this is the last step.
ceedan将近 3 年前
&gt; A language designed around having first-class GUI support<p>Definitely qt, right? <a href="https:&#x2F;&#x2F;www.qt.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.qt.io&#x2F;</a><p>And HTML&#x2F;CSS :downtrodden-developer-with-woozy-face:
评论 #32086877 未加载
poulpy123将近 3 年前
&gt; A better calculator language<p>Well there are many of them like MATLAB, IDL, scilab, R and others. Python is verbose because it&#x27;s not a calculator language but a general purpose language. I find J unreadable.
评论 #32082472 未加载
评论 #32085977 未加载
mpjan将近 3 年前
&gt; A better calculator language<p><a href="https:&#x2F;&#x2F;calca.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;calca.io&#x2F;</a>
_gabe_将近 3 年前
&gt; You know how annoying linked lists are? Graphs are 1000x worse.<p>I thought linked lists were one of the easier data structures to implement? Is he saying they&#x27;re annoying to use or implement here?
评论 #32085922 未加载
icodestuff将近 3 年前
There are plenty of really dynamically-typed languages. io is probably the most so of them, but I&#x27;d argue Smalltalk and even Objective-C are pretty up there.
tobyhinloopen将近 3 年前
What’s the point of contracts? Can’t you use tests for that?
评论 #32088889 未加载
abrax3141将近 3 年前
“Everything is a graph”<p>This is sort of an odd thing to want. You need a diversity of data structures. And BTW the acronym not withstanding, lisp represents graphs not lists.
评论 #32087078 未加载
评论 #32084121 未加载
mbrodersen将近 3 年前
&gt; A serious take on a contract-based language<p>This already exists: programming languages that supports refinement types. Examples are Liquid Haskell and F* (F-star).
__alexs将近 3 年前
I want a programming language that takes dynamic scope seriously. Not because I think it would be good, but I think it would be <i>interesting.</i>
评论 #32085346 未加载
评论 #32083127 未加载
评论 #32083641 未加载
评论 #32083275 未加载
评论 #32109356 未加载
roflc0ptic将近 3 年前
For the contract language, I’d recommend checking out Daml! It’s a Haskell-based smart contracts language with some pretty neat behaviors
ParetoOptimal将近 3 年前
&gt; I want a language that’s terse for everything. Maybe you could namespace operators.<p>Haskell and lenses is pretty nice here.
B1aZer将近 3 年前
Solidity (ethereum cryptocurrency language) is based on contracts.<p>Svelte (javascript framework) has reactivity build in.
zeckalpha将近 3 年前
The closest examples I can thing of to these, in sequence:<p>- Idris (dependent types rather than contracts, but squint and the UX is the same) - Python&#x27;s decorators enable some of this, but Aspect oriented programming may also be what they are looking for. Boomerang is totally different but also an exploration in this space. - Io, or even JavaScript fit this description - there&#x27;s a calculator like this I am forgetting the name of at the moment - this looks like Dependent typing to me, see Idris above
评论 #32084148 未加载
frabjoused将近 3 年前
I feel VB6 appeals to sys admin types who don&#x27;t get kept up at night by misaligned padding or a misplaced pixel. It&#x27;s similar to the MS Access crowd that happily pump out functional abominations without a second thought. My first UIs were made using AutoHotkey in the early 2000s and while I felt empowered, I ditched it as fast as I could.
wheelerof4te将近 3 年前
For a GUI-focused languages, we have C# and Java.<p>For a fully dynamic scripting language, look no further than Python.<p>Function inheritance? We have decorators in Python already, and most functional languages support seamless function composition. Take your pick between Haskell, Lisp, Scala and even Rust.<p>Designing a new languages needs to have a pragmatic purpose and sometimes, valid ideology.
duped将近 3 年前
&gt; (Someone’s gonna tell me this is 100% smalltalk for sure)<p>IIRC Objective-C can bind new methods at runtime
kemiller将近 3 年前
I&#x27;d like to see one like rust, but with an AI-enabled compiler that can help you by suggesting implementations, and also estimating time&#x2F;space complexity for you, detecting infinite loops, etc. So rust + copilot, but more, and designed into the language from the start, not cobbled together from public repos.
chubot将近 3 年前
<i>Graphs are really common data structures but there hasn’t yet been an “everything’s a graph” language</i><p>Nearly all common languages like Python, JS, Java, OCaml, etc. let you express graphs with records &#x2F; objects. Everything is a graph!<p>If you want a homogeneous graph, you just declare a single node type, like<p><pre><code> class Node: edges: List[Node] # or maybe Dict[str, Node] if you want them to be named payload: int </code></pre> - Or you can have a heterogeneous graph with many different node types.<p>- If you want to label the edges, you can reify them as their own type<p>The whole heap is graph-shaped!<p>It&#x27;s true that many programs in these languages are more tree-like than graph-like. And sometimes imperative code to manipulate graphs is hard to visualize.<p>But I think there doesn’t need to be a separate language of graphs for this reason.<p>---<p>If you want to see graphs done in plain C, look at this DFA code by Russ Cox:<p><a href="https:&#x2F;&#x2F;swtch.com&#x2F;~rsc&#x2F;regexp&#x2F;regexp1.html" rel="nofollow">https:&#x2F;&#x2F;swtch.com&#x2F;~rsc&#x2F;regexp&#x2F;regexp1.html</a><p>e.g. Implementation: Compiling to NFA<p>(copy of lobste.rs comment)
评论 #32086992 未加载
6510将近 3 年前
I want to see an emulated hardware design lang to make desktop apps.
Razengan将近 3 年前
I’d like to see a modern BASIC-like language with line numbers :)
评论 #32089158 未加载
rowanG077将近 3 年前
Aren&#x27;t contracts just a worse form of dependent types?
评论 #32088431 未加载
anotherrandom将近 3 年前
Java ecosystem but C# language.<p>There needs to be a J# project lmao
jgtrosh将近 3 年前
&gt; keystokes matter a lot<p>Meta
joshlemer将近 3 年前
Regarding graphs, I also have wondered why thy are not part of the regular suite of collections &#x2F; literal syntaxes in most languages. In fact, they are really rare to even see in day to day programming, despite that most of our problems could make use of them in some way. I think part of it must come down to that you can&#x27;t come up with a satisfactory way to encode graphs of data in a text-based literal. You will have to have a lot of repeating of nodes depending on how you want to express it. Take this simple graph from Wikipedia for instance <a href="https:&#x2F;&#x2F;upload.wikimedia.org&#x2F;wikipedia&#x2F;commons&#x2F;thumb&#x2F;5&#x2F;5b&#x2F;6n-graf.svg&#x2F;1920px-6n-graf.svg.png" rel="nofollow">https:&#x2F;&#x2F;upload.wikimedia.org&#x2F;wikipedia&#x2F;commons&#x2F;thumb&#x2F;5&#x2F;5b&#x2F;6n...</a><p>We could express this as an adjacency list like<p><pre><code> Graph{ 1 &lt;-&gt; 2 1 &lt;-&gt; 5 2 &lt;-&gt; 3 2 &lt;-&gt; 5 3 &lt;-&gt; 4 4 &lt;-&gt; 5 4 &lt;-&gt; 6 } </code></pre> So there&#x27;s already a lot of repetition of the node labels, but in real life applications you would probably have actual data associated with each node (like maybe a user_id, or a name, etc, whatever the &quot;elements&quot; of your graph are). Actually, you would in most cases have some key that identifies the node (like user_id), and some other data associated with the node (like date of birth, locale, etc). So the above notation would force some kind of notation like:<p><pre><code> (&quot;user1&quot;, (1970, USA)) &lt;-&gt; (&quot;user2&quot;, (1980, UK)) (&quot;user1&quot;, (1970, USA)) &lt;-&gt; (&quot;user5&quot;, (1990, RU)) ... </code></pre> So now the notation would require not only repetition of the node name, but also the data itself. This would be even more of a problem if the data was not a literal but was computed, like: (&quot;user2&quot;, (getDateOfBirth(&quot;user2&quot;), getLocale(&quot;user2&quot;))<p>So then the way around this would be to use the programming language&#x27;s own variable&#x2F;identifier system, like<p><pre><code> var user1 = (&quot;user1&quot;, (1970, USA)) var user2 = (&quot;user2&quot;, (1980, UK)) var user5 = (&quot;user5&quot;, (1990, RU)) Graph{ user1 &lt;-&gt; user2, user1 &lt;-&gt; user5, ... } </code></pre> or perhaps some other node registration system, and then just repeat the labels<p><pre><code> Graph{ Nodes { (&quot;user1&quot;, (1970, USA)), (&quot;user2&quot;, (1980, UK)), (&quot;user5&quot;, (1990, RU)), ... } Edges { &quot;user1&quot; &lt;-&gt; &quot;user2&quot;, &quot;user1&quot; &lt;-&gt; &quot;user5&quot;, ... } } </code></pre> So now we&#x27;ve avoided repeating data, but we still have to repeat nodes. In some situations, a different way of expressing a graph would also be preferable to adjacency lists (you might want an adjacency table, but in sparse graphs the list is more efficient)<p>but by the way, for your graph system to be generally useful, you&#x27;ll have to come up with a syntax and flexibility of design that ergonomically allows graphs that vary in:<p>directedness: support for undirected and directed edges edge wights and data: edges could be identical or they could have weights or even keys and other attributes associated with them<p>graph&#x2F;multigraph: can there be multiple edges between the same 2 nodes?<p>in statically typed languages, the data type of the &quot;key&quot; of the nodes, the &quot;value&quot; of the nodes, the &quot;key&quot;, &quot;value&quot; of the edges, all have to be represented to some degree in the language&#x27;s type system, so at least 4 generic parameters in a graph<p>So, seems that there is just a huge design space and a variety of different usecases that makes coming up with a simple solution to the general problem very difficult.
评论 #32095995 未加载
deltaonenine将近 3 年前
Basically the man wants two opposite things.<p>He wants contracts which is basically dependent types. These rules live in types and already exists in agda, Idris and coq and has a range of tradeoffs.<p>Essentially these languages can enforce static checks and &quot;contracts&quot; so powerful you don&#x27;t need unit tests. These &quot;contracts&quot; cover more ground and are safer then tests. The tradeoff is you need a big brain and lots of time to write these things.<p>Then he wants a language that is truly dynamic. Which is like the opposite.
评论 #32084364 未加载
评论 #32084345 未加载