Re: the best language I have ever met(?)

2017-10-13 Thread Igor via Digitalmars-d-learn

On Friday, 25 November 2016 at 19:16:43 UTC, ketmar wrote:
On Friday, 25 November 2016 at 14:27:39 UTC, Igor Shirkalin 
wrote:

On Wednesday, 23 November 2016 at 18:58:55 UTC, ketmar wrote:
We can define static array without counting the elements as 
following:



enum array_ = [1u,2,3,4];
uint[array_.length] static_array = array_;


there are workarounds, of course. yet i'll take mine `uint[$] 
a = [1u,2,3,4];` over that quoted mess at any time, without 
second thought. ;-)


I think you may write it (I mean actual D) with using some 
template like this:


yeah. but i'm not Andrei, i don't believe that the only 
compiler task is to resolve templated code. ;-) i.e. Andrei 
believes that everything (and more) should be moved out of 
compiler core and done with library templates. Andrei is 
genius, for sure, but he is living somewhere in future, where 
our PCs are not bound by memory, CPU, and other silly 
restrictions. ;-)


tl;dr: using template for this sux.


I just don't understand how is it worth to add to a language that 
instead of typing someArray.length you can just type $ but it is 
not ok to add to the language the same thing for static array 
size...


Re: the best language I have ever met(?)

2017-10-10 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 25 November 2016 at 19:16:43 UTC, ketmar wrote:
yeah. but i'm not Andrei, i don't believe that the only 
compiler task is to resolve templated code. ;-) i.e. Andrei 
believes that everything (and more) should be moved out of 
compiler core and done with library templates. Andrei is 
genius, for sure, but he is living somewhere in future, where 
our PCs are not bound by memory, CPU, and other silly 
restrictions. ;-)


tl;dr: using template for this sux.


Nice to meet you, Andrei!

Yes, in mathematics we are more servants than gentlemen (Charles 
Hermite).





Re: the best language I have ever met(?)

2016-12-05 Thread Igor Shirkalin via Digitalmars-d-learn

On Monday, 5 December 2016 at 17:27:21 UTC, Igor Shirkalin wrote:

On Monday, 5 December 2016 at 16:39:33 UTC, eugene wrote:
On Monday, 5 December 2016 at 16:07:41 UTC, Igor Shirkalin 
wrote:
I didnt count, but its about ten thousend a year, i.e. 
nothing.


if you earned nothing using D language why do you recommend 
it?)))

People usually earn money using programming langs.
some people have nothing about science. Some of them are god's 
addicted. I don't think D is here. We are out of here. We 
should go to facebook and keep here if you take it. that's it.


I think we have to stop.



Re: the best language I have ever met(?)

2016-12-05 Thread Igor Shirkalin via Digitalmars-d-learn

On Monday, 5 December 2016 at 16:39:33 UTC, eugene wrote:
On Monday, 5 December 2016 at 16:07:41 UTC, Igor Shirkalin 
wrote:

I didnt count, but its about ten thousend a year, i.e. nothing.


if you earned nothing using D language why do you recommend 
it?)))

People usually earn money using programming langs.
some people have nothing about science. Some of them are god's 
addicted. I don't think D is here. We are out of here. We should 
go to facebook and keep here if you take it. that's it.


Re: the best language I have ever met(?)

2016-12-05 Thread eugene via Digitalmars-d-learn

On Monday, 5 December 2016 at 16:07:41 UTC, Igor Shirkalin wrote:

I didnt count, but its about ten thousend a year, i.e. nothing.


if you earned nothing using D language why do you recommend it?)))
People usually earn money using programming langs.



Re: the best language I have ever met(?)

2016-12-05 Thread Igor Shirkalin via Digitalmars-d-learn

On Saturday, 3 December 2016 at 15:02:35 UTC, eugene wrote:
On Friday, 18 November 2016 at 17:54:52 UTC, Igor Shirkalin 
wrote:

That was preface.
Now I have server written in D for C++ pretty ancient client. 
Most things are three times shorter in size and clear (@clear? 
suffix). All programming paradigms were used.
I have the same text in russian, but who has bothered 
russian(s)?
The meaning of all of that is: powerfull attractive language 
with sufficient infrastructure with future. Just use it.


p.s. I'm excused for my primitive english.


how much money did you earn using D language?
I didnt count, but its about ten thousend a year, i.e. nothing. 
You earn ten times more of me. Ask me enything more.




Re: the best language I have ever met(?)

2016-12-03 Thread eugene via Digitalmars-d-learn

On Friday, 18 November 2016 at 17:54:52 UTC, Igor Shirkalin wrote:

That was preface.
Now I have server written in D for C++ pretty ancient client. 
Most things are three times shorter in size and clear (@clear? 
suffix). All programming paradigms were used.
I have the same text in russian, but who has bothered 
russian(s)?
The meaning of all of that is: powerfull attractive language 
with sufficient infrastructure with future. Just use it.


p.s. I'm excused for my primitive english.


how much money did you earn using D language?


Re: the best language I have ever met(?)

2016-12-02 Thread Igor Shirkalin via Digitalmars-d-learn
On Monday, 28 November 2016 at 16:15:23 UTC, Jonathan M Davis 
wrote:
That's what pragma(inline, true) is for. And if someone wants a 
different solution that's completely compile-time and doesn't 
work with variables, then fine. I'm talking about adding 
something to the standard library, and for that, I think that a 
solution that is as close as possible to being identical to 
simply declaring the static array with the length is what would 
be appropriate.



...


I'm not married to the syntax. I tried that syntax, but I 
couldn't figure out how to get it to work with runtime values.


Can I insert my own opinion about static arrays with programmers' 
unknown size?
Being the practical developer I can't imagine the situation where 
it is really needed. I hope D is not for theoretical goals only 
but for practical ones first.
If we know the size of our future array we tell that to the 
compiler. If we don't know the size of our future static array we 
write an external generator to produce that. I really don't know 
places where I want static array to be unknown size inline 
(perhaps, except for debugging purposes). Concluding, the 
designer knows he's achived the perfection if there is nothing to 
remove, but not to add.


Igor Shirkalin



Re: the best language I have ever met(?)

2016-11-28 Thread Jonathan M Davis via Digitalmars-d-learn
On Saturday, November 26, 2016 00:43:04 Artur Skawina via Digitalmars-d-
learn wrote:
> IOW you want to improve IFTI, so that `n` is inferred from the
> length of the passed argument. That would indeed work for array
> literals and CTFE-able expressions. Any improvement to IFTI is a
> good thing, but the RT cost of this helper could be high if it ever
> doesn't get inlined and completely optimized away.

That's what pragma(inline, true) is for. And if someone wants a different
solution that's completely compile-time and doesn't work with variables,
then fine. I'm talking about adding something to the standard library, and
for that, I think that a solution that is as close as possible to being
identical to simply declaring the static array with the length is what would
be appropriate.

> If the cost isn't an issue and a different syntax is acceptable
> then this should already work:
>
>template staticArray(T, E...) {
>   T[E.length] staticArray() @property { return [E]; }
>}
>template staticArray(E...) {
>   typeof([E][0])[E.length] staticArray() @property { return [E]; }
>}
>
>ubyte a;
>auto sa = staticArray!(ubyte, 1, 2, 3, 4, a);
>auto sb = staticArray!(1, 2, 3, 4, a);

I'm not married to the syntax. I tried that syntax, but I couldn't figure
out how to get it to work with runtime values. The closest that I could come
up with was what I showed before, and the fact that IFTI wasn't smart enough
with VRP was the only blocker. It looks like you've found a way to do it
with all template arguments though, which is fine with me.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Artur Skawina via Digitalmars-d-learn
On 11/25/16 18:33, Jonathan M Davis via Digitalmars-d-learn wrote:
> On Friday, November 25, 2016 18:20:11 Artur Skawina via Digitalmars-d-learn 
> wrote:
>> On 11/25/16 17:30, Jonathan M Davis via Digitalmars-d-learn wrote:
>>> On Friday, November 25, 2016 17:03:32 Artur Skawina via
enum T[N] staticArray(T, alias ELS, size_t N=ELS.length) = ELS;
auto arr = staticArray!(ubyte, [1, 2, 3, 4]);
>>>
>>> That won't work with variables. e.g.
>>>
>>> ubyte a;
>>> auto arr = staticArray!(ubyte, [1, 2, 3, 4, a]);
>>>
>>> would fail to compile. It only works when all of the values are known at
>>> compile time, whereas
>>>
>>> ubyte a;
>>> ubyte[5] arr = [1, 2, 3, 4, a];
>>>
>>> would compile just fine.
>>
>> Now you're trying to change the scope. Of course this is a hack,
>> that's only useful in certain contexts, such as initializing static
>> arrays with known values, which this subthread is about.
> 
> How is it changing the scope? What has been asked for on several occasions -
> and what int[$] was supposed to fix - was the ability to intialize a static
> array while inferring its size.

It's a known language limitation, which can be worked around using
hacks such as the one I showed, that help in the very common cases
that appeared in this thread, add zero RT costs and work with VRP.
I didn't realize you were suggesting to use the function helper
route for the general case - no scope change, sorry.

> ubyte a;
> ubyte[5] arr = [1, 2, 3, 4, a];
> 
> is a perfectly legitimate example of initializing a static array, and
> there's no reason why it shouldn't be a goal to have it work with a function
> that infers the size of the static array.

The problem with such a function is that, just like every other function,
it's type can not depend on RT data, and that `typeof([1,a])` is `int[]`.
The information is lost at the function boundary. So the possible
improvements are a) changing the array literal semantics, and b)
improving IFTI. 

> We'd actually have it right now with
> 
> T[n] staticArray(T, size_t n)(auto ref T[n] arr)
> {
> return arr;
> }
> 
> except that VRP only works right now if no inferrence is done when
> instantiating the template.
> 
> auto sa = staticArray!(ubyte, 4)([1, 2, 3, 4]);
> 
> compiles just fine, but that obviously defeats the purpose of the template.
> If the compiler is improved so that
> 
> auto sa = staticArray!ubyte([1, 2, 3, 4]);
> 
> also works with VRP, then everything works just like it would with
> 
> ubyte a;
> ubyte[5] arr = [1, 2, 3, 4, a];
> 
> except that with the function, the size would be inferred.
> 
> ubyte a;
> auto arr = staticArray!ubyte([1, 2, 3, 4, a]);

IOW you want to improve IFTI, so that `n` is inferred from the
length of the passed argument. That would indeed work for array
literals and CTFE-able expressions. Any improvement to IFTI is a
good thing, but the RT cost of this helper could be high if it ever
doesn't get inlined and completely optimized away.
If the cost isn't an issue and a different syntax is acceptable
then this should already work:

   template staticArray(T, E...) {
  T[E.length] staticArray() @property { return [E]; }
   }
   template staticArray(E...) {
  typeof([E][0])[E.length] staticArray() @property { return [E]; }
   }

   ubyte a;
   auto sa = staticArray!(ubyte, 1, 2, 3, 4, a);
   auto sb = staticArray!(1, 2, 3, 4, a);

artur


Re: the best language I have ever met(?)

2016-11-25 Thread ketmar via Digitalmars-d-learn

On Friday, 25 November 2016 at 14:27:39 UTC, Igor Shirkalin wrote:

On Wednesday, 23 November 2016 at 18:58:55 UTC, ketmar wrote:
We can define static array without counting the elements as 
following:



enum array_ = [1u,2,3,4];
uint[array_.length] static_array = array_;


there are workarounds, of course. yet i'll take mine `uint[$] 
a = [1u,2,3,4];` over that quoted mess at any time, without 
second thought. ;-)


I think you may write it (I mean actual D) with using some 
template like this:


yeah. but i'm not Andrei, i don't believe that the only compiler 
task is to resolve templated code. ;-) i.e. Andrei believes that 
everything (and more) should be moved out of compiler core and 
done with library templates. Andrei is genius, for sure, but he 
is living somewhere in future, where our PCs are not bound by 
memory, CPU, and other silly restrictions. ;-)


tl;dr: using template for this sux.


Re: the best language I have ever met(?)

2016-11-25 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, November 25, 2016 18:20:11 Artur Skawina via Digitalmars-d-learn 
wrote:
> On 11/25/16 17:30, Jonathan M Davis via Digitalmars-d-learn wrote:
> > On Friday, November 25, 2016 17:03:32 Artur Skawina via
> >>enum T[N] staticArray(T, alias ELS, size_t N=ELS.length) = ELS;
> >>auto arr = staticArray!(ubyte, [1, 2, 3, 4]);
> >
> > That won't work with variables. e.g.
> >
> > ubyte a;
> > auto arr = staticArray!(ubyte, [1, 2, 3, 4, a]);
> >
> > would fail to compile. It only works when all of the values are known at
> > compile time, whereas
> >
> > ubyte a;
> > ubyte[5] arr = [1, 2, 3, 4, a];
> >
> > would compile just fine.
>
> Now you're trying to change the scope. Of course this is a hack,
> that's only useful in certain contexts, such as initializing static
> arrays with known values, which this subthread is about.

How is it changing the scope? What has been asked for on several occasions -
and what int[$] was supposed to fix - was the ability to intialize a static
array while inferring its size.

ubyte a;
ubyte[5] arr = [1, 2, 3, 4, a];

is a perfectly legitimate example of initializing a static array, and
there's no reason why it shouldn't be a goal to have it work with a function
that infers the size of the static array.

> It actually makes the source code (look) worse; having to use lots of
> such module- or project-local hacks doesn't scale, and is a symptom
> of language problems.
>
> The point, however, was that that is the only way to get VRP - the
> values must be available at CT for VRP to work effectively.
> Your suggestion to "fix" VRP would break CTFE (different implicit
> conversions would be allowed at CT and RT) and could result in
> code compiling or not depending on the function arguments used,
> possibly in a very unintuitive way (eg depending on if the function
> args values happened to be CTFE-able).

We'd actually have it right now with

T[n] staticArray(T, size_t n)(auto ref T[n] arr)
{
return arr;
}

except that VRP only works right now if no inferrence is done when
instantiating the template.

auto sa = staticArray!(ubyte, 4)([1, 2, 3, 4]);

compiles just fine, but that obviously defeats the purpose of the template.
If the compiler is improved so that

auto sa = staticArray!ubyte([1, 2, 3, 4]);

also works with VRP, then everything works just like it would with

ubyte a;
ubyte[5] arr = [1, 2, 3, 4, a];

except that with the function, the size would be inferred.

ubyte a;
auto arr = staticArray!ubyte([1, 2, 3, 4, a]);

And until

https://issues.dlang.org/show_bug.cgi?id=16779

is fixed, the above definition of staticArray works perfectly fine except
for the fact that you lose out on VRP. And once 16779 is fixed, we have a
complete solution, whereas any solution that would currently work with VRP
permanently loses out on being able to have any variables used in
initializing the array.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Artur Skawina via Digitalmars-d-learn
On 11/25/16 17:30, Jonathan M Davis via Digitalmars-d-learn wrote:
> On Friday, November 25, 2016 17:03:32 Artur Skawina via Digitalmars-d-learn 
> wrote:
>> On 11/25/16 15:51, Jonathan M Davis via Digitalmars-d-learn wrote:
>>> On Friday, November 25, 2016 14:27:39 Igor Shirkalin via
>>> Digitalmars-d-learn>
>>> wrote:
 I think you may write it (I mean actual D) with using some
 template like this:

 auto array = static_array!uint(1, 2, 3, 4)

 Could you please help to writeown this template in the best and
 clear manner?
>>>
>>> That's easy. The problem is if you want it to have the same semantics as
>>>
>>> uint[4] arr = [1, 2, 3, 4];
>>>
>>> In particular, VRP (Value Range Propagation) is a problem. This compiles
>>>
>>> ubyte[4] arr = [1, 2, 3, 4];
>>>
>>> because each of the arguments is known to fit in a ubyte. However,
>>> making
>>>
>>> auto arr = staticArray!ubyte(1, 2, 3, 4);
>>>
>>> do the same without forcing a cast is difficult. [...]
>>
>>enum T[N] staticArray(T, alias ELS, size_t N=ELS.length) = ELS;
>>auto arr = staticArray!(ubyte, [1, 2, 3, 4]);
> 
> That won't work with variables. e.g.
> 
> ubyte a;
> auto arr = staticArray!(ubyte, [1, 2, 3, 4, a]);
> 
> would fail to compile. It only works when all of the values are known at
> compile time, whereas
> 
> ubyte a;
> ubyte[5] arr = [1, 2, 3, 4, a];
> 
> would compile just fine.

Now you're trying to change the scope. Of course this is a hack,
that's only useful in certain contexts, such as initializing static
arrays with known values, which this subthread is about.

It actually makes the source code (look) worse; having to use lots of 
such module- or project-local hacks doesn't scale, and is a symptom
of language problems.

The point, however, was that that is the only way to get VRP - the
values must be available at CT for VRP to work effectively.
Your suggestion to "fix" VRP would break CTFE (different implicit
conversions would be allowed at CT and RT) and could result in
code compiling or not depending on the function arguments used,
possibly in a very unintuitive way (eg depending on if the function
args values happened to be CTFE-able).

artur



Re: the best language I have ever met(?)

2016-11-25 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, November 25, 2016 08:26:11 Jonathan M Davis via Digitalmars-d-
learn wrote:
> and opening an enhancement request to make the compiler smart enough that
>
> auto arr = staticArray!ubyte([1, 2, 3, 4]);
>
> would work.

Opened: https://issues.dlang.org/show_bug.cgi?id=16779

And regardless of this particular use case, it's something that arguably
should work.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, November 25, 2016 17:03:32 Artur Skawina via Digitalmars-d-learn 
wrote:
> On 11/25/16 15:51, Jonathan M Davis via Digitalmars-d-learn wrote:
> > On Friday, November 25, 2016 14:27:39 Igor Shirkalin via
> > Digitalmars-d-learn>
> > wrote:
> >> I think you may write it (I mean actual D) with using some
> >> template like this:
> >>
> >> auto array = static_array!uint(1, 2, 3, 4)
> >>
> >> Could you please help to write down this template in the best and
> >> clear manner?
> >
> > That's easy. The problem is if you want it to have the same semantics as
> >
> > uint[4] arr = [1, 2, 3, 4];
> >
> > In particular, VRP (Value Range Propagation) is a problem. This compiles
> >
> > ubyte[4] arr = [1, 2, 3, 4];
> >
> > because each of the arguments is known to fit in a ubyte. However,
> > making
> >
> > auto arr = staticArray!ubyte(1, 2, 3, 4);
> >
> > do the same without forcing a cast is difficult. [...]
>
>enum T[N] staticArray(T, alias ELS, size_t N=ELS.length) = ELS;
>auto arr = staticArray!(ubyte, [1, 2, 3, 4]);

That won't work with variables. e.g.

ubyte a;
auto arr = staticArray!(ubyte, [1, 2, 3, 4, a]);

would fail to compile. It only works when all of the values are known at
compile time, whereas

ubyte a;
ubyte[5] arr = [1, 2, 3, 4, a];

would compile just fine.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, November 25, 2016 15:59:48 Igor Shirkalin via Digitalmars-d-learn 
wrote:
> On Friday, 25 November 2016 at 14:51:52 UTC, Jonathan M Davis
> > auto arr = staticArray!ubyte([1, 2, 3, 4]);
> >
> > doesn't compile either. The most straightforward
> > implementations are something like
>
> Why? Is it since [1, 2, 3, 4] is int[4] by default?

It's because [1, 2, 3, 4] is inferred to be int[], and _then_ the compiler
tries to instantiate the templated function, whereas with

ubyte[4] = [1, 2, 3, 4];

the compiler looks at is one thing and determines that the array literal can
be ubyte[], and it works. And if staticArray is a variadic template instead
of taking an array literal, e.g.

auto arr = staticArray!ubyte(1, 2, 3, 4);

then the values all get inferred to be int, and when it tries to assign the
arguments to the ubyte[4], it doesn't compile, because they're int and not
ubyte, which then means that you're forced to either cast the elements to
ubyte at the call site

auto arr = staticArray!ubyte(cast(ubyte)1,
 cast(ubyte)2,
 cast(ubyte)3,
 cast(ubyte)4);

or staticArray itself has to do the cast, but if staticArray itself does the
cast, then something like

auto arr = staticArray!ubyte(1, 2, 900);

would compile without error, and you'd end up with whatever cast(ubyte)900
is. I'd _like_ to be able to find a way to make it so that the semantics of
the staticArray function are identical to

ubyte[4] = [1, 2, 3, 4];

except that the length is inferred, and I'm coming to the conclusion that
it's not possible. That being the case, I'm leaning towards going with

T[n] staticArray(T, size_t n)(auto ref T[n] arr)
{
return arr;
}

and opening an enhancement request to make the compiler smart enough that

auto arr = staticArray!ubyte([1, 2, 3, 4]);

would work. I don't see

auto arr = staticArray!ubyte(1, 2, 3, 4);

ever working unless the symbols being passed in could be examined at compile
time, and I don't think that they can be - just their types.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Artur Skawina via Digitalmars-d-learn
On 11/25/16 15:51, Jonathan M Davis via Digitalmars-d-learn wrote:
> On Friday, November 25, 2016 14:27:39 Igor Shirkalin via Digitalmars-d-learn 
> wrote:
>> I think you may write it (I mean actual D) with using some
>> template like this:
>>
>> auto array = static_array!uint(1, 2, 3, 4)
>>
>> Could you please help to write down this template in the best and
>> clear manner?
> 
> That's easy. The problem is if you want it to have the same semantics as
> 
> uint[4] arr = [1, 2, 3, 4];
> 
> In particular, VRP (Value Range Propagation) is a problem. This compiles
> 
> ubyte[4] arr = [1, 2, 3, 4];
> 
> because each of the arguments is known to fit in a ubyte. However, making
> 
> auto arr = staticArray!ubyte(1, 2, 3, 4);
> 
> do the same without forcing a cast is difficult. [...]

   enum T[N] staticArray(T, alias ELS, size_t N=ELS.length) = ELS;
   auto arr = staticArray!(ubyte, [1, 2, 3, 4]);

artur


Re: the best language I have ever met(?)

2016-11-25 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 25 November 2016 at 07:17:18 UTC, MGW wrote:
On Wednesday, 23 November 2016 at 18:54:35 UTC, Igor Shirkalin 
wrote:

Igor, is the good Russian-speaking forum

https://vk.com/vk_dlang.

There are articles on GUI and other aspects of dlang.


Thank you, I'll tale a look at it for sure.


Re: the best language I have ever met(?)

2016-11-25 Thread Igor Shirkalin via Digitalmars-d-learn
On Friday, 25 November 2016 at 14:51:52 UTC, Jonathan M Davis 
wrote:

I think you may write it (I mean actual D) with using some
template like this:

auto array = static_array!uint(1, 2, 3, 4)

Could you please help to write down this template in the best 
and clear manner?


That's easy. The problem is if you want it to have the same 
semantics as


uint[4] arr = [1, 2, 3, 4];

In particular, VRP (Value Range Propagation) is a problem. This 
compiles


ubyte[4] arr = [1, 2, 3, 4];

because each of the arguments is known to fit in a ubyte. 
However, making


auto arr = staticArray!ubyte(1, 2, 3, 4);

do the same without forcing a cast is difficult. And if you 
force the cast, then it's not equivalent anymore, because 
something like


ubyte[4] arr = [1, 2, 3, 900];

would not compile. And surprisingly, having the function take a 
dynamic array doesn't fix that problem (though maybe that's 
something that we could talk the dmd devs into improving). e.g.
To mine mind it is not a problem because when you write you think 
what you write (or you are right). Morover compiler will always 
tell you are wrong if you make 256 to be ubyte implicity.




auto arr = staticArray!ubyte([1, 2, 3, 4]);

doesn't compile either. The most straightforward 
implementations are something like

Why? Is it since [1, 2, 3, 4] is int[4] by default?



T[n] staticArray(T, size_t n)(auto ref T[n] arr)
{
return arr;
}

or

auto staticArray(Args...)(Args args)
{
CommonType!Args[Args.length] arr = [args];
return arr;
}

Great! Thank you. I should take more precise look at std.traits



but I don't know if the VRP problem is solvable or not without 
some compiler improvements. If there's a clever enough 
implementation to get VRP with a function like this with the 
current language, I haven't figured it out yet.


- Jonathan M Davis
As I noticed, to my mind it is not a hindrance to write 
deliberate things.


- Igor Shirkalin



Re: the best language I have ever met(?)

2016-11-25 Thread Jonathan M Davis via Digitalmars-d-learn
On Friday, November 25, 2016 14:27:39 Igor Shirkalin via Digitalmars-d-learn 
wrote:
> On Wednesday, 23 November 2016 at 18:58:55 UTC, ketmar wrote:
> >> We can define static array without counting the elements as
> >> following:
> >>
> >>
> >> enum array_ = [1u,2,3,4];
> >> uint[array_.length] static_array = array_;
> >
> > there are workarounds, of course. yet i'll take mine `uint[$] a
> > = [1u,2,3,4];` over that quoted mess at any time, without
> > second thought. ;-)
>
> I think you may write it (I mean actual D) with using some
> template like this:
>
> auto array = static_array!uint(1, 2, 3, 4)
>
> Could you please help to write down this template in the best and
> clear manner?

That's easy. The problem is if you want it to have the same semantics as

uint[4] arr = [1, 2, 3, 4];

In particular, VRP (Value Range Propagation) is a problem. This compiles

ubyte[4] arr = [1, 2, 3, 4];

because each of the arguments is known to fit in a ubyte. However, making

auto arr = staticArray!ubyte(1, 2, 3, 4);

do the same without forcing a cast is difficult. And if you force the cast,
then it's not equivalent anymore, because something like

ubyte[4] arr = [1, 2, 3, 900];

would not compile. And surprisingly, having the function take a dynamic
array doesn't fix that problem (though maybe that's something that we could
talk the dmd devs into improving). e.g.

auto arr = staticArray!ubyte([1, 2, 3, 4]);

doesn't compile either. The most straightforward implementations are
something like

T[n] staticArray(T, size_t n)(auto ref T[n] arr)
{
return arr;
}

or

auto staticArray(Args...)(Args args)
{
CommonType!Args[Args.length] arr = [args];
return arr;
}

but I don't know if the VRP problem is solvable or not without some compiler
improvements. If there's a clever enough implementation to get VRP with a
function like this with the current language, I haven't figured it out yet.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-25 Thread Igor Shirkalin via Digitalmars-d-learn

On Wednesday, 23 November 2016 at 18:58:55 UTC, ketmar wrote:
We can define static array without counting the elements as 
following:



enum array_ = [1u,2,3,4];
uint[array_.length] static_array = array_;


there are workarounds, of course. yet i'll take mine `uint[$] a 
= [1u,2,3,4];` over that quoted mess at any time, without 
second thought. ;-)


I think you may write it (I mean actual D) with using some 
template like this:


auto array = static_array!uint(1, 2, 3, 4)

Could you please help to write down this template in the best and 
clear manner?


Re: the best language I have ever met(?)

2016-11-24 Thread MGW via Digitalmars-d-learn
On Wednesday, 23 November 2016 at 18:54:35 UTC, Igor Shirkalin 
wrote:

Igor, is the good Russian-speaking forum

https://vk.com/vk_dlang.

There are articles on GUI and other aspects of dlang.


Re: the best language I have ever met(?)

2016-11-23 Thread Dsby via Digitalmars-d-learn

On Friday, 18 November 2016 at 17:54:52 UTC, Igor Shirkalin wrote:

The simpler - the better.
After reading "D p.l." by A.Alexandrescu two years ago I have 
found my past dream. It's theory to start with. That book 
should be read at least two times especially if you have 
asm/c/c++/python3/math/physics background, and dealt with 
Watcom/Symantec C/C++ compilers (best to Walter Bright) with 
very high optimization goal. No stupid questions, just doing 
things.

That was preface.
Now I have server written in D for C++ pretty ancient client. 
Most things are three times shorter in size and clear (@clear? 
suffix). All programming paradigms were used.
I have the same text in russian, but who has bothered 
russian(s)?
The meaning of all of that is: powerfull attractive language 
with sufficient infrastructure with future. Just use it.


[...]


My English is Bad than yours.

I am mot russian(s)、、、I am Chinese.


Re: the best language I have ever met(?)

2016-11-23 Thread ketmar via Digitalmars-d-learn
On Wednesday, 23 November 2016 at 19:15:52 UTC, Jonathan M Davis 
wrote:
It's nice, but it's non-standard. So, it seems to me that using 
it is just going to lead to problems like you ran into in this 
thread where you posted an example that wasn't valid D, and 
it'll make you that much more annoyed when you have to write 
code that _is_ standard D and can't use your enhancements. So, 
I really think that it would be better if you just used 
standard D, but obviously, that's up to you.


for me, it is easier to "vanilize" the code later (if i need to, 
at all). yeah, sometimes non-vanilla code sneaks to where it 
doesn't belong, but it is rare, and doesn't invalidate the things 
that makes my life easier while i developing my projects. ;-) as 
i am unemployed now, i don't care if somebody is able to compile 
my code anymore.


Re: the best language I have ever met(?)

2016-11-23 Thread Jonathan M Davis via Digitalmars-d-learn
On Wednesday, November 23, 2016 18:58:55 ketmar via Digitalmars-d-learn 
wrote:
> On Wednesday, 23 November 2016 at 18:54:35 UTC, Igor Shirkalin
>
> wrote:
> > On Tuesday, 22 November 2016 at 00:08:05 UTC, ketmar wrote:
> >> On Monday, 21 November 2016 at 23:49:27 UTC, burjui wrote:
> >>> Though I would argue that it's better to use '_' instead of
> >>> '$' to denote deduced fixed size, it seems more obvious to me:
> >>>
> >>> int[_] array = [ 1, 2, 3 ];
> >>
> >> alas, `_` is valid identifier, so `enum _ = 42; int[_] a;` is
> >> perfectly valid. dollar is simply most logical non-identifier
> >> character.
> >
> > We can define static array without counting the elements as
> > following:
> >
> >
> > enum array_ = [1u,2,3,4];
> > uint[array_.length] static_array = array_;
>
> there are workarounds, of course. yet i'll take mine `uint[$] a =
> [1u,2,3,4];` over that quoted mess at any time, without second
> thought. ;-)

It's nice, but it's non-standard. So, it seems to me that using it is just
going to lead to problems like you ran into in this thread where you posted
an example that wasn't valid D, and it'll make you that much more annoyed
when you have to write code that _is_ standard D and can't use your
enhancements. So, I really think that it would be better if you just used
standard D, but obviously, that's up to you.

We really should add a helper for this to std.typecons though. Maybe I'll
try and do something for it this holidy weekend...

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-23 Thread ketmar via Digitalmars-d-learn
On Wednesday, 23 November 2016 at 18:54:35 UTC, Igor Shirkalin 
wrote:

On Tuesday, 22 November 2016 at 00:08:05 UTC, ketmar wrote:

On Monday, 21 November 2016 at 23:49:27 UTC, burjui wrote:
Though I would argue that it's better to use '_' instead of 
'$' to denote deduced fixed size, it seems more obvious to me:


int[_] array = [ 1, 2, 3 ];


alas, `_` is valid identifier, so `enum _ = 42; int[_] a;` is 
perfectly valid. dollar is simply most logical non-identifier 
character.


We can define static array without counting the elements as 
following:



enum array_ = [1u,2,3,4];
uint[array_.length] static_array = array_;


there are workarounds, of course. yet i'll take mine `uint[$] a = 
[1u,2,3,4];` over that quoted mess at any time, without second 
thought. ;-)


Re: the best language I have ever met(?)

2016-11-23 Thread Igor Shirkalin via Digitalmars-d-learn

On Tuesday, 22 November 2016 at 00:08:05 UTC, ketmar wrote:

On Monday, 21 November 2016 at 23:49:27 UTC, burjui wrote:
Though I would argue that it's better to use '_' instead of 
'$' to denote deduced fixed size, it seems more obvious to me:


int[_] array = [ 1, 2, 3 ];


alas, `_` is valid identifier, so `enum _ = 42; int[_] a;` is 
perfectly valid. dollar is simply most logical non-identifier 
character.


We can define static array without counting the elements as 
following:



enum array_ = [1u,2,3,4];
uint[array_.length] static_array = array_;


Re: the best language I have ever met(?)

2016-11-21 Thread Daniel Kozak via Digitalmars-d-learn

Dne 21.11.2016 v 13:44 Jonathan M Davis via Digitalmars-d-learn napsal(a):


... it's easy enough to just create a
template to do the same thing, it's not worth adding to the language.
That's a problem. I belive there is a lot of things which are easy to 
add by some kind of magic (template or mixins or some combination). But 
until this is add to standard library and doc, there is no way for other 
people to know about it. Even when there is a way (in standard library) 
it is not helpful.


Many people (like me) will start learning language from specs. So if 
there see something like:

int[$] x = [1, 2, 3]; // make static array, this make sense
but  x = [1, 2, 3]; // make dynamic array ,does not make sense


Re: the best language I have ever met(?)

2016-11-21 Thread ketmar via Digitalmars-d-learn
On Monday, 21 November 2016 at 12:44:47 UTC, Jonathan M Davis 
wrote:
(it might have even had a PR which was rejected), and 
presumably, Ketmar added it to his own compiler, because he 
liked the feature.
exactly. it is the old patch from Kenji. the patch even survived 
C++ -> D transition, 'cause i love it so much. ;-)


Re: the best language I have ever met(?)

2016-11-21 Thread ketmar via Digitalmars-d-learn

On Monday, 21 November 2016 at 23:49:27 UTC, burjui wrote:
Though I would argue that it's better to use '_' instead of '$' 
to denote deduced fixed size, it seems more obvious to me:


int[_] array = [ 1, 2, 3 ];


alas, `_` is valid identifier, so `enum _ = 42; int[_] a;` is 
perfectly valid. dollar is simply most logical non-identifier 
character.


Re: the best language I have ever met(?)

2016-11-21 Thread burjui via Digitalmars-d-learn
On Monday, 21 November 2016 at 12:44:47 UTC, Jonathan M Davis 
wrote:
Someone could create a DIP for it though and argue for it. If 
they did that convincingly enough, maybe it would become a 
feature. I suspect that the response will be though that since 
it's easy enough to just create a template to do the same 
thing, it's not worth adding to the language.


- Jonathan M Davis


That's definitely what Walter would say. But I think it shouldn't 
be the only argument to not add a feature to the language itself: 
if some pattern is useful/frequent, and users implement it 
themselves every time, it should be either implemented in the 
compiler or in the standard library.


Besides that, it just seems inconsistent that D lacks this 
particular feature: fixed-sized arrays are there, type deduction 
is there, so where's type deduction for fixed-sized arrays? 
Though I would argue that it's better to use '_' instead of '$' 
to denote deduced fixed size, it seems more obvious to me:


int[_] array = [ 1, 2, 3 ];


Re: the best language I have ever met(?)

2016-11-21 Thread ketmar via Digitalmars-d-learn

On Monday, 21 November 2016 at 12:42:34 UTC, ZombineDev wrote:
That was a proposal for D that was rejected in the last moment 
by Andrei. My guess is that ketmar's modified dmd has that 
feature implemented.


exactly. it is handy feature, so i used to it. and it slept into 
code (i usually test my code with rdmd before posting, but this 
time i forgot to specify --vanilla flag ;-).


Re: the best language I have ever met(?)

2016-11-21 Thread Namespace via Digitalmars-d-learn
On Monday, 21 November 2016 at 12:44:47 UTC, Jonathan M Davis 
wrote:
On Monday, November 21, 2016 12:08:30 Patric Dexheimer via 
Digitalmars-d- learn wrote:
No. D doesn't have that, though it's easy enough to do the same 
thing with a helper template. However, Ketmar seems to like to 
use his own fork of dmd where he made changes to the language 
based on his preferences. IIRC, it was proposed at one point 
that $ be used in this manner to create a static array while 
inferring its size (it might have even had a PR which was 
rejected), and presumably, Ketmar added it to his own compiler, 
because he liked the feature. But for better or worse, it's not 
standard D, and if the PR was rejected like I think it was, 
then it likely never will become standard D. Someone could 
create a DIP for it though and argue for it. If they did that 
convincingly enough, maybe it would become a feature. I suspect 
that the response will be though that since it's easy enough to 
just create a template to do the same thing, it's not worth 
adding to the language.


- Jonathan M Davis


https://p0nce.github.io/d-idioms/#@nogc-Array-Literals:-Breaking-the-Limits


Re: the best language I have ever met(?)

2016-11-21 Thread Jonathan M Davis via Digitalmars-d-learn
On Monday, November 21, 2016 12:08:30 Patric Dexheimer via Digitalmars-d-
learn wrote:
> On Saturday, 19 November 2016 at 00:47:00 UTC, ketmar wrote:
> > On Saturday, 19 November 2016 at 00:28:36 UTC, Stefan Koch
> >
> > wrote:
> >> Please don't post non-d.
> >
> > it slipped accidentally, sorry. ;-)
> >
> > for OP: `uint[2] a = [42, 69];` is the correct syntax.
>
> "uint[$] a = [42, 69];"
>
> haha for a moment I thought that this was the way of D to create
> a fixed-size array without explicit setting the size (like what u
> can do in c++ :))

No. D doesn't have that, though it's easy enough to do the same thing with a
helper template. However, Ketmar seems to like to use his own fork of dmd
where he made changes to the language based on his preferences. IIRC, it was
proposed at one point that $ be used in this manner to create a static array
while inferring its size (it might have even had a PR which was rejected),
and presumably, Ketmar added it to his own compiler, because he liked the
feature. But for better or worse, it's not standard D, and if the PR was
rejected like I think it was, then it likely never will become standard D.
Someone could create a DIP for it though and argue for it. If they did that
convincingly enough, maybe it would become a feature. I suspect that the
response will be though that since it's easy enough to just create a
template to do the same thing, it's not worth adding to the language.

- Jonathan M Davis



Re: the best language I have ever met(?)

2016-11-21 Thread ZombineDev via Digitalmars-d-learn
On Monday, 21 November 2016 at 12:08:30 UTC, Patric Dexheimer 
wrote:

On Saturday, 19 November 2016 at 00:47:00 UTC, ketmar wrote:
On Saturday, 19 November 2016 at 00:28:36 UTC, Stefan Koch 
wrote:

Please don't post non-d.

it slipped accidentally, sorry. ;-)

for OP: `uint[2] a = [42, 69];` is the correct syntax.


"uint[$] a = [42, 69];"

haha for a moment I thought that this was the way of D to 
create a fixed-size array without explicit setting the size 
(like what u can do in c++ :))


That was a proposal for D that was rejected in the last moment by 
Andrei. My guess is that ketmar's modified dmd has that feature 
implemented.


Re: the best language I have ever met(?)

2016-11-21 Thread Patric Dexheimer via Digitalmars-d-learn

On Saturday, 19 November 2016 at 00:47:00 UTC, ketmar wrote:
On Saturday, 19 November 2016 at 00:28:36 UTC, Stefan Koch 
wrote:

Please don't post non-d.

it slipped accidentally, sorry. ;-)

for OP: `uint[2] a = [42, 69];` is the correct syntax.


"uint[$] a = [42, 69];"

haha for a moment I thought that this was the way of D to create 
a fixed-size array without explicit setting the size (like what u 
can do in c++ :))


Re: the best language I have ever met(?)

2016-11-19 Thread Igor Shirkalin via Digitalmars-d-learn

On Saturday, 19 November 2016 at 20:54:32 UTC, ketmar wrote:
On Saturday, 19 November 2016 at 17:12:13 UTC, Igor Shirkalin 
wrote:

  string s = "%(%s, %)".format(a);
  writefln(s);
}


Accepted.
Is it really needed to call 'writefln'? I mean 'f'.


no. it's a leftover from the code without format. it originally 
was `writefln("%(%s, %)", a);`, but i wanted to show `format` 
function too, and forgot to remove `f`. actually, it is a BUG 
to call `writefln` here, 'cause who knows, `s` may contain '%', 
and then boom! all hell broke loose. ;-)


Got it! Thanks.


Re: the best language I have ever met(?)

2016-11-19 Thread ketmar via Digitalmars-d-learn
On Saturday, 19 November 2016 at 17:12:13 UTC, Igor Shirkalin 
wrote:

  string s = "%(%s, %)".format(a);
  writefln(s);
}


Accepted.
Is it really needed to call 'writefln'? I mean 'f'.


no. it's a leftover from the code without format. it originally 
was `writefln("%(%s, %)", a);`, but i wanted to show `format` 
function too, and forgot to remove `f`. actually, it is a BUG to 
call `writefln` here, 'cause who knows, `s` may contain '%', and 
then boom! all hell broke loose. ;-)


Re: the best language I have ever met(?)

2016-11-19 Thread Igor Shirkalin via Digitalmars-d-learn

On Saturday, 19 November 2016 at 00:28:36 UTC, Stefan Koch wrote:

import std.stdio;
import std.format;
void main () {
  uint[$] a = [42, 69];
  string s = "%(%s, %)".format(a);
  writefln(s);
}


Please don't post non-d.
People might use it an then complain that it does not work.


Let these people to complain. ;)


Re: the best language I have ever met(?)

2016-11-19 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 21:28:44 UTC, ketmar wrote:
On Friday, 18 November 2016 at 20:31:57 UTC, Igor Shirkalin 
wrote:

After 2 hours of brain breaking (as D newbie) I have come to:


uint_array.map!(v=>"%x".format(v)).join(", ")

Why 2 hours? Because I have started with 'joiner' function and 
aftewords found out the 'join'.


To my mind there is more simple form for this task in D (about 
formatting).


sure ;-)

import std.stdio;
import std.format;
void main () {
  uint[$] a = [42, 69];
  string s = "%(%s, %)".format(a);
  writefln(s);
}


Accepted.
Is it really needed to call 'writefln'? I mean 'f'.


Re: the best language I have ever met(?)

2016-11-18 Thread ketmar via Digitalmars-d-learn

On Saturday, 19 November 2016 at 00:28:36 UTC, Stefan Koch wrote:

Please don't post non-d.

it slipped accidentally, sorry. ;-)

for OP: `uint[2] a = [42, 69];` is the correct syntax.


Re: the best language I have ever met(?)

2016-11-18 Thread Stefan Koch via Digitalmars-d-learn

On Friday, 18 November 2016 at 21:28:44 UTC, ketmar wrote:
On Friday, 18 November 2016 at 20:31:57 UTC, Igor Shirkalin 
wrote:

After 2 hours of brain breaking (as D newbie) I have come to:


uint_array.map!(v=>"%x".format(v)).join(", ")

Why 2 hours? Because I have started with 'joiner' function and 
aftewords found out the 'join'.


To my mind there is more simple form for this task in D (about 
formatting).


sure ;-)

import std.stdio;
import std.format;
void main () {
  uint[$] a = [42, 69];
  string s = "%(%s, %)".format(a);
  writefln(s);
}


Please don't post non-d.
People might use it an then complain that it does not work.



Re: the best language I have ever met(?)

2016-11-18 Thread ketmar via Digitalmars-d-learn

On Friday, 18 November 2016 at 20:31:57 UTC, Igor Shirkalin wrote:

After 2 hours of brain breaking (as D newbie) I have come to:


uint_array.map!(v=>"%x".format(v)).join(", ")

Why 2 hours? Because I have started with 'joiner' function and 
aftewords found out the 'join'.


To my mind there is more simple form for this task in D (about 
formatting).


sure ;-)

import std.stdio;
import std.format;
void main () {
  uint[$] a = [42, 69];
  string s = "%(%s, %)".format(a);
  writefln(s);
}


Re: the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 19:47:17 UTC, H. S. Teoh wrote:
On Fri, Nov 18, 2016 at 11:43:49AM -0800, H. S. Teoh via 
Digitalmars-d-learn wrote: [...]
Yes, I meant 'sentiments' as in опыта, not as in 
сентметальность. :-)

[...]

Sorry, typo. I meant сентиментальности. But I think you 
understand what I mean. :-)



T


I Think there's a bug. When I'm answerring a message, and if my 
recipient send me the message, and after I press 'send' button, 
my message is duplicated. Simple bug to repare.




Re: the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 19:47:17 UTC, H. S. Teoh wrote:
Yes, I meant 'sentiments' as in опыта, not as in 
сентметальность. :-)

[...]
Sorry, typo. I meant сентиментальности. But I think you 
understand what I mean. :-)

Oh, I think you understand what you think what I mean :)




Re: the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 19:43:49 UTC, H. S. Teoh wrote:
I was a little bit afraid of my missunderstanding in terms of 
sentiments.  You've got me right (I don't quite feel the 
meaning of that in these non-cyrillic letters:). But what I 
understand is the path you have walked and what I have in my 
mind.


Yes, I meant 'sentiments' as in опыта, not as in 
сентметальность. :-)
I used to mean 'sentiments' as "сентиметальность", but "опыт - 
сын ошибок трудных" (Пушкин) is what realy in behind :)



Simple example about D: I spent two hours to write a line 
(borrowed from Python), related with lazy calculations, but 
finally I got it with deep great thinking, and it was like 
understanding of Moon alienation from Earth.



Great!  Would you like to share the code snippet?


Sure. Let we have a uint_array of values. And we need to get a 
string of these values in hex separated with ','. In Python it 
looks like



 ', '.join(map(hex, uint_array))


After 2 hours of brain breaking (as D newbie) I have come to:


uint_array.map!(v=>"%x".format(v)).join(", ")

Why 2 hours? Because I have started with 'joiner' function and 
aftewords found out the 'join'.


To my mind there is more simple form for this task in D (about 
formatting).



What is your using of D?
Sadly, I have not been able to use D in a professional 
capacity. My coworkers are very much invested into C/C++ and 
have a very high level of skepticism to anything else, in 
addition to resistance to adding new toolchains (much less


languages) to the current projects.  So my use of D has mainly 
been in personal projects.  I do contribute to Phobos (the


Same here.
But my coworkers are not addicted to programming at all :)

standard library) every now and then, though.  It's my way of 
"contributing to the cause" in the hopes that one day D may be 
more widespread and accepted by the general programming 
community.


I don't hope about "D some day", I'm sure about that (5 to 30 
years).

The idea is "I D", not "I C++" :)




Re: the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 19:43:49 UTC, H. S. Teoh wrote:
I was a little bit afraid of my missunderstanding in terms of 
sentiments.  You've got me right (I don't quite feel the 
meaning of that in these non-cyrillic letters:). But what I 
understand is the path you have walked and what I have in my 
mind.


Yes, I meant 'sentiments' as in опыта, not as in 
сентметальность. :-)
I used to mean 'sentiments' as "сентиметальность", but "опыт - 
сын ошибок трудных" (Пушкин) is what realy in behind :)



Simple example about D: I spent two hours to write a line 
(borrowed from Python), related with lazy calculations, but 
finally I got it with deep great thinking, and it was like 
understanding of Moon alienation from Earth.



Great!  Would you like to share the code snippet?


Sure. We have an array of uint. And we need to get a string of 
these values in hex separated with ','. In Python it looks like



 ', '.join(map(hex, array))



array.map!(v=>"%x".format(v)).join(", ")



[...]

What is your using of D?
For me it is tool to develope other tools.

[...]

Sadly, I have not been able to use D in a professional 
capacity. My coworkers are very much invested into C/C++ and 
have a very high level of skepticism to anything else, in 
addition to resistance to adding new toolchains (much less 
languages) to the current projects.  So my use of D has mainly 
been in personal projects.  I do contribute to Phobos (the 
standard library) every now and then, though.  It's my way of 
"contributing to the cause" in the hopes that one day D may be 
more widespread and accepted by the general programming 
community.



T





Re: the best language I have ever met(?)

2016-11-18 Thread H. S. Teoh via Digitalmars-d-learn
On Fri, Nov 18, 2016 at 11:43:49AM -0800, H. S. Teoh via Digitalmars-d-learn 
wrote:
[...]
> Yes, I meant 'sentiments' as in опыта, not as in сентметальность. :-)
[...]

Sorry, typo. I meant сентиментальности. But I think you understand what
I mean. :-)


T

-- 
The most powerful one-line C program: #include "/dev/tty" -- IOCCC


Re: the best language I have ever met(?)

2016-11-18 Thread H. S. Teoh via Digitalmars-d-learn
On Fri, Nov 18, 2016 at 07:26:56PM +, Igor Shirkalin via 
Digitalmars-d-learn wrote:
> On Friday, 18 November 2016 at 18:14:41 UTC, H. S. Teoh wrote:
> > Welcome, Igor!
> Hello, Teoh!
> > 
> > Your sentiments reflect mine years ago when I first discovered D.  I
> > came from a C/C++/Perl background.  It was also Andrei's book that
> > got me started; in those early days documentation was scant and I
> > didn't know how to write idiomatic D code. But after I found TDPL,
> > the rest was history. :-)
> I was a little bit afraid of my missunderstanding in terms of
> sentiments.  You've got me right (I don't quite feel the meaning of
> that in these non-cyrillic letters:). But what I understand is the
> path you have walked and what I have in my mind.

Yes, I meant 'sentiments' as in опыта, not as in сентметальность. :-)


> Simple example about D: I spent two hours to write a line (borrowed
> from Python), related with lazy calculations, but finally I got it
> with deep great thinking, and it was like understanding of Moon
> alienation from Earth.

Great!  Would you like to share the code snippet?


[...]
> What is your using of D?
> For me it is tool to develope other tools.
[...]

Sadly, I have not been able to use D in a professional capacity. My
coworkers are very much invested into C/C++ and have a very high level
of skepticism to anything else, in addition to resistance to adding new
toolchains (much less languages) to the current projects.  So my use of
D has mainly been in personal projects.  I do contribute to Phobos (the
standard library) every now and then, though.  It's my way of
"contributing to the cause" in the hopes that one day D may be more
widespread and accepted by the general programming community.


T

-- 
By understanding a machine-oriented language, the programmer will tend to use a 
much more efficient method; it is much closer to reality. -- D. Knuth


Re: the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

On Friday, 18 November 2016 at 18:14:41 UTC, H. S. Teoh wrote:

Welcome, Igor!

Hello, Teoh!


Your sentiments reflect mine years ago when I first discovered 
D.  I came from a C/C++/Perl background.  It was also Andrei's 
book that got me started; in those early days documentation was 
scant and I didn't know how to write idiomatic D code. But 
after I found TDPL, the rest was history. :-)
I was a little bit afraid of my missunderstanding in terms of 
sentiments. You've got me right (I don't quite feel the meaning 
of that in these non-cyrillic letters:). But what I understand is 
the path you have walked and what I have in my mind.
Simple example about D: I spent two hours to write a line 
(borrowed from Python), related with lazy calculations, but 
finally I got it with deep great thinking, and it was like 
understanding of Moon alienation from Earth.


We have a few Russians on this forum, and I can understand some 
Russian too. Though on this mailing list English is the 
language to use.
Sure, I don't have any doubt of it. I hope to be one of russian 
understandables here:)



Your English is understandable. That's good enough, I think. :-)

Thank you, Teoh. That is very important for me to hear.

What is your using of D?
For me it is tool to develope other tools.

Igor


Re: the best language I have ever met(?)

2016-11-18 Thread H. S. Teoh via Digitalmars-d-learn
On Fri, Nov 18, 2016 at 05:54:52PM +, Igor Shirkalin via 
Digitalmars-d-learn wrote:
> The simpler - the better.
> After reading "D p.l." by A.Alexandrescu two years ago I have found my
> past dream. It's theory to start with. That book should be read at
> least two times especially if you have asm/c/c++/python3/math/physics
> background, and dealt with Watcom/Symantec C/C++ compilers (best to
> Walter Bright) with very high optimization goal. No stupid questions,
> just doing things.
> That was preface.
> Now I have server written in D for C++ pretty ancient client. Most
> things are three times shorter in size and clear (@clear? suffix). All
> programming paradigms were used.

Welcome, Igor!

Your sentiments reflect mine years ago when I first discovered D.  I
came from a C/C++/Perl background.  It was also Andrei's book that got
me started; in those early days documentation was scant and I didn't
know how to write idiomatic D code. But after I found TDPL, the rest was
history. :-)


> I have the same text in russian, but who has bothered russian(s)?

We have a few Russians on this forum, and I can understand some Russian
too. Though on this mailing list English is the language to use.


> The meaning of all of that is: powerfull attractive language with
> sufficient infrastructure with future. Just use it.

Yes, I agree!


> p.s. I'm excused for my primitive english.
[...]

Your English is understandable. That's good enough, I think. :-)


T

-- 
If the comments and the code disagree, it's likely that *both* are wrong. -- 
Christopher


the best language I have ever met(?)

2016-11-18 Thread Igor Shirkalin via Digitalmars-d-learn

The simpler - the better.
After reading "D p.l." by A.Alexandrescu two years ago I have 
found my past dream. It's theory to start with. That book should 
be read at least two times especially if you have 
asm/c/c++/python3/math/physics background, and dealt with 
Watcom/Symantec C/C++ compilers (best to Walter Bright) with very 
high optimization goal. No stupid questions, just doing things.

That was preface.
Now I have server written in D for C++ pretty ancient client. 
Most things are three times shorter in size and clear (@clear? 
suffix). All programming paradigms were used.

I have the same text in russian, but who has bothered russian(s)?
The meaning of all of that is: powerfull attractive language with 
sufficient infrastructure with future. Just use it.


p.s. I'm excused for my primitive english.