How do you use D?
Joakim
dlang at joakim.fea.st
Fri Jan 5 11:49:44 UTC 2018
On Wednesday, 3 January 2018 at 17:50:01 UTC, Ola Fosheim Grøstad
wrote:
> On Wednesday, 3 January 2018 at 16:20:48 UTC, Joakim wrote:
>> These languages may all have these problems, but I don't see
>> the connection to your original point about it not being good
>> to think you're the best.
>
> Hm? I tried to say that it is not good to think that you have
> the best programmers. Or that you are satisfied with only
> appealing to the best programmers.
Yes, but when I pointed out that it's fine to think you're the
best as long as you stay focused on bettering the flaws you still
have, you responded with points about memory management and how
C++ can't be a "competitive high level language," seemingly
ignoring the topic at hand. Good to see you address it below.
> There are some assumptions about "best" in that attitude that
> isn't healthy for developing an ecosystem. First of all, it
> might not be true, maybe the best programmers go elsewhere.
> Second of all, programmers generally don't start out as "best".
> And only appealing to experience programmers is not a good
> long term strategy.
Thinking you're the best doesn't imply that inexperienced
programmers shouldn't show up, it just means they better think
they have the ability to someday be similarly good. ;) And when
you're smaller and trying to take on older languages with many
more users, you need some identity to rally your much smaller
group of insurgents: thinking you're the best is as good a
rallying cry as any other.
Finally, D is hardly pitched as an "expert-only" language, given
it makes pragmatic choices to use a GC by default and carry
forward the popular C syntax. It simply provides many more power
tools that you can use, if you're so inclined to go farther and
learn more.
> Anyway, you probably have a lot more great programmers using
> Javascript than any small language, measured in absolute
> numbers. And when growing a eco system it is those absolute
> numbers that matters. It doesn't matter if 99% are not good if
> the other 1% can grow your infrastructure. And well, right now
> that means developers can be very productive in that eco system
> (e.g. TypeScript, Angular, React etc).
What would be better, a million JS programmers with 10k great
ones who "grow your infrastructure," or 150k D programmers with
30k great ones doing the same? Holding everything else
equivalent proportionally, I'd say the latter. Of course, a very
important factor could be how willing the million is to pay for
better tools, as that will lead to great tools programmers from
less-popular languages to swarm into JS for the money, but given
how much of the time all these dev tools are free, particularly
for JS, that doesn't matter as much.
Another huge factor is that you are fundamentally limited by the
language, it doesn't matter how many great devs work on speeding
up a fundamentally slow and inefficient language design, which a
core team of great programmers wouldn't have put out there in the
first place. :P
>> More programmers don't have a bachelors in CS than those who
>> do. I think you'll find the percentage who regularly use
>> multiple languages is fairly low, let alone evaluating each
>> one for each job.
>
> I think it depends on what type of developement we are talking
> about. But I see a lot of fuzz about fullstack developers. Not
> sure if that fuzz translates into something at scale, but
> "full-stack" is at least something that is mentioned frequently.
It's a high percentage without CS bachelors in most subfields of
programming. As for "full stack," a meaningless term which I bet
actually has less CS bachelors than the percentage I gave. ;)
>>> Anyway, it is my impression that many C/C++ programmers also
>>> know Python and also have a good understanding of basic
>>> functional programming.
>>
>> So two tools in the toolbox is enough?
>
> Not sure what you mean by that. I meant to say that my
> impression is that most C/C++ programmers need a higher level
> language and also are capable of using other paradigms than
> what C/C++ encourages. Despite C++ being able to express a lot
> of the same things and also despite C++ being a language where
> you never really reach a full deep understanding of the
> language.
It's pretty simple what I mean: you were responding to my point
that most don't really pick the best tool for the job, but have a
single language that they try to hammer every nail with. Saying
that most C++ programmers also use python implies that having two
tools that you choose from is enough. In that case, you're
basically agreeing with me, despite your previous statements
otherwise, as I was saying we can't expect most programmers to
learn more than one tool, ie a single language.
>> Your company is much more likely to bring in somebody with
>> Java experience to write the Android portion.
>
> Mostly because of the iOS/Android frameworks, not really
> because of the languages.
That's why I included such knowledge of the needed frameworks in
knowing a language platform earlier, as realistically it can be
as important to getting the job done.
> Or rather, the Java language shouldn't be the stumbling block,
> but both of iOS and Android are rather bloated frameworks that
> takes time getting into. Which I think it is intentional. Both
> Apple and Google want developers to be dedicated experts on
> their platform and seems to deliberately go for changes that
> prevent cross platform tooling.
Could be, but that changes nothing about the reality that most
programmers are just going to pick one language and some set of
frameworks that are commonly used with it.
>> It is unrealistic to expect the vast majority of programmers
>> to do any more than use one language most of the time.
>
> I don't know. Depends on what kind of development we are
> talking about.
That is the current reality, it doesn't matter what hypothetical
kind of development you have in mind.
>> This actually argues for a single language: you're going to
>> spend a ton of time tracking all those shifting frameworks so
>> you won't have time for a new language too, but at least you
>> won't have to learn a new language every time you pick up the
>> new js framework of the day.
>
> I think there is another way, but it isn't available yet.
>
> Program transliteration and software synthesis should over time
> be able to offset some of these issues.
>
> Most imperative languages are fairly similar. Most of the code
> we write, whether it is in Python, C+ or D would have a fairly
> similar structure. In some sections you get something very
> different, but I don't think that is dominating.
Yes, that is part of the plan with betterC, to make it easy to
translate C code to D.
>> The ongoing churn may help new languages with new users and
>> companies, don't think it helps with users who already know a
>> language well.
>
> I don't know. Seems that many in these forums have done work in
> Java, Go, Python, Rust and C++.
D users are the exception that prove the rule, the much larger
majority not using D because they're already entrenched in their
language. That's because, unlike Go, D offers many more features
than other languages, so it particularly appeals to such advanced
users from other languages.
>> Seems like an oxymoron, tech changes so fast that I don't see
>> how anything could be timeless, even if you really mean "will
>> still be the same 20 years from now." ;)
>
> Right, but digital computing is a relatively new invention (and
> well, even electricity is relatively new ;-). Over time one
> would think that something "timeless" would establish itself.
> But for now we can just say "stable".
>
> There clearly are some frameworks that have been relatively
> stable. Like matlab. I think that is because matlab has tried
> to closely model the domain that scientists have been trained
> in (linear algebra). But it is interesting that Python is
> making inroads there. That matlab is now perceived as not
> having good enough abstraction mechanisms, perhaps.
>
> On the other hand, the mathematical field of logic is also
> relatively new as it is conceptualized today, and some people
> are exploring paradigms such as probabilistic programming
> languages and what not… So right, "timeless" is not realistic
> at the moment as the basic foundation is still quite new and we
> are still learning how to make computers reason about first
> order logic… (building automatic theorem provers).
I don't think such stability will ever happen, because unlike
electricity distribution or other older tech, software is
infinitely malleable. We're always going to keep stretching and
twisting it in new ways, as we get more used to its plasticity.
We will do a better job of securing and developing it, but we're
always going to keep changing it.
>> There's always new stuff other than that, eg more limited
>> mobile hardware over the last decade has returned the tech
>> market to earlier times, and native languages like Obj-C and
>> Swift have benefited.
>
> Yeah, as you have pointed out many times, mobile CPUs are
> quickly catching up at the high end and also to some extent on
> the middle-end. What remains to be seen is how the mass-market
> low end picks up. I think companies like Motorola is pushing
> the curve at the low/middle phone market as Samsung and Apple
> have taken the high end.
Sure, so you _could_ now run python on those newly powerful
mobile CPUs, but Objective-C and Swift have used that decade when
you _couldn't_ to entrench themselves in that market. And as
I've pointed out to you before, they're still much more
efficient, so until battery tech get much better, you're going to
want to stick with those natively-compiled languages.
>> Python has done well in those niches, but when is the last
>> time you saw a popular GUI app written in Python?
>
> Many applications use Python (or Lua or Java or even Visual
> Basic) to tie the pieces together, including the GUI, but they
> use engines written in other languages for interfacing with the
> OS.
Which of those python-glued GUI apps has become popular? That
was the question: I can find toy apps in any language, that
nobody uses.
>> Even Java got nowhere in the consumer GUI market, other than a
>> few p2p apps like Vuze and the now-defunct Limewire, largely
>> for piracy.
>
> JetBrain's products?
I wouldn't call developer tools consumer apps, as they're used by
developers to do their job, so that doesn't really qualify. I
should also note that I meant consumer desktop GUI apps, as
obviously Java does well on mobile, when it was made the default
application language for Android, though they've paid the price
for its inefficiency and lag and had to AoT-compile it starting
with Lollipop.
>> While that market may be important to you, it is a small
>> segment of the programming market. It's nice that D libraries
>> like Mir are targeting it, but it's not going to move the
>> needle much.
>
> Mmm… it is a small segment of the revenue-based market, because
> scientific programmers are often the scientists themselves (no
> it is not important to me at the moment). It is a fairly large
> segment though of the overall market. As it includes a lot of
> engineering. Just because those programs aren't sold, either
> because they are in-house, personal or with a very narrow user
> base (like researchers) doesn't mean that these programs are
> less important.
I don't think it's a large percentage of programmers or programs
either, leaving aside revenue. It used to be a significant chunk
decades ago, but I believe it has dwindled to a small percentage
as computing has spread everywhere else.
>> You may not even know that's because of generic programming,
>> you just like all the great libraries. IOW, you may think you
>> don't need generic programming, but the libraries you do need
>> do need it.
>
> That's right, but you need critical mass for it to matter.
I've given you an estimate of D users, you haven't said why that
hasn't passed your critical mass threshold.
> Otherwise people will just use somewhat slower or somewhat more
> clunky libraries. Go, Python and JavaScript are doing fine…
> without proper generics.
As I noted in an earlier thread in this forum, I can build a bike
in a couple hours and get going faster out of the gate up to a
top speed of 30 km/h. However, the guy building his own car will
take longer but eventually zoom by me at 150 km/h.
Those languages got farther earlier, but that's no guarantee they
win the race.
On Thursday, 4 January 2018 at 07:51:56 UTC, Paulo Pinto wrote:
> On Wednesday, 3 January 2018 at 16:20:48 UTC, Joakim wrote:
>> On Wednesday, 3 January 2018 at 11:43:35 UTC, Paulo Pinto
>> wrote:
>>> On Wednesday, 3 January 2018 at 11:13:04 UTC, Joakim wrote:
>>>> On Wednesday, 3 January 2018 at 10:29:05 UTC, Ola Fosheim
>>>> Grøstad wrote:
>>>>> On Wednesday, 3 January 2018 at 09:56:48 UTC, Pjotr Prins
>>>>> wrote:
>>>>> [...]
>>>>
>>>>> Good programmers aren't stuck on any single language and
>>>>> will pick the tool best suited for the job at hand. Good
>>>>> programmers are also good at picking up new languages.
>>>>
>>>> And who do you know who does this? While I myself have
>>>> espoused the idea of the best tool for the job in this
>>>> forum, realistically, other than a small handful of coders,
>>>> when does that ever happen?
>>>> [...]
>>>
>>> Everyone at my employer, a few thousand of them doing
>>> enterprise consulting.
>>>
>>> We specialize in a few large domains, and tend to jump
>>> between them every 6 months or a year, when switching
>>> projects.
>>>
>>> On my case, full stack development across JVM and .NET
>>> languages, with C++ for low level coding.
>>
>> How many of those few thousand are actually comfortable with
>> C++ for low-level coding? I think you've said before that
>> it's not many. So okay, your colleagues switch between Java
>> and C#, which is somewhat uncommon as many places are pure C#
>> or Java shops, but those are the two most popular enterprise
>> application languages, noted for their similarities.
>>
>> You can hardly use this as an example of having a toolbox of
>> languages and picking the best for the job, say Erlang for
>> some high-concurrency microservice or ruby for an app you need
>> to get up and running quickly. You're just using two of the
>> most popular business languages and deciding which based on
>> what the customer wants.
>>
>
> Not all of them of them are comfortable with C++, that is true.
>
> But they are comfortable with other languages, which I am not.
>
> Notice that "JVM and .NET languages, with C++ for low level
> coding." was my own skillset, not everyone at the company.
>
> Also I said JVM and .NET languages, not Java and C#. If you
> want me to be more precise, Java, Clojure, C#, F#, VB.NET and
> now getting into Kotlin due to future Android projects.
>
> I also do JavaScript, PL/SQL, pgSQL on occasion, and have
> helped some iOS projects when an extra helping hand is needed
> and I am low on project requests.
>
> I never like to specialize in any technology stack, it is the
> best way to outdate myself on a market that is fashion driven.
I suspect you are one of the small handful I mentioned, even in
your company, who's comfortable with so many languages.
> Of course there are lots of details I don't master in every
> programming language, but as Wirth puts it, it is all about
> mastering CS concepts, algorithms and data structures. Also why
> Knuth used his own invented Assembly instead of choosing any
> programming language.
>
> To actually know every detail of programming language, or what
> its runtime library is capable of, there are books and web
> sites to get it from.
>
> Soft skills and domain knowledge in each market are more
> relevant than knowing every single detail of a programming
> language.
I suspect that is what most at even your company do: focus on a
single language, much more of its details, and all those non-CS
skills you say are more important. Which is fine, that has been
the natural order of things, a few generalists like you
interacting with a bunch of specialists.
On Thursday, 4 January 2018 at 13:07:37 UTC, Mengu wrote:
> On Wednesday, 3 January 2018 at 16:20:48 UTC, Joakim wrote:
>> On Wednesday, 3 January 2018 at 11:43:35 UTC, Paulo Pinto
>> wrote:
>>> On Wednesday, 3 January 2018 at 11:13:04 UTC, Joakim wrote:
>>>> On Wednesday, 3 January 2018 at 10:29:05 UTC, Ola Fosheim
>>>> Grøstad wrote:
>>>>> On Wednesday, 3 January 2018 at 09:56:48 UTC, Pjotr Prins
>>>>> wrote:
>>>>> [...]
>>>
>>> I perceived that there was a lot of hype around Python 15
>>> years ago or so. Now, universities are replacing Java with
>>> Python as the introduction language and Python is also
>>> becoming the defacto language for scientific programming.
>>> Python is basically getting critical mass and is now managing
>>> to take on Matlab and perhaps to some extent even
>>> C++/Fortran.
>>
>> Python has done well in those niches, but when is the last
>> time you saw a popular GUI app written in Python? That is the
>> largest segment of the market, and Python has basically no
>> uptake there. Even Java got nowhere in the consumer GUI
>> market, other than a few p2p apps like Vuze and the
>> now-defunct Limewire, largely for piracy.
>>
>
> you could not be more wrong. there are tons of python gui
> applications. pygtk, pyqt and wxpython are great libraries that
> allows you to create desktop apps very easy and fast. D does
> not even have a good solution except for gtkD which is a one
> man show. if it wasn't for Mike we would not even have it.
> leadership does not care. remember qtd guys stopping everything
> because a bug was not getting fixed?
Maybe I am, but you have not named a popular python GUI app like
I asked, only some GUI frameworks that could be used to build
such an app. I wasn't saying that you couldn't write a python
GUI app, but that it's probably not the best tool for the job.
> there's also one other thing: atom, vs code, spotify, slack are
> all running on electron. does it make it a better platform than
> python?
No, because it's still a bad framework, as posts like this show:
https://medium.com/@caspervonb/why-i-still-use-vim-67afd76b4db6
But at least they can show some real-world successes for app
usage, even if they perform poorly because of the fundamental
limitations of the language. I don't think python has even
gotten that far.
More information about the Digitalmars-d
mailing list