[erlang-questions] Update with complicated data structure
YuanZhiqian
on-your-mark@REDACTED
Wed Nov 25 06:10:36 CET 2015
Hi Richard,
I am really not interested in quarreling, I hope you are 100%ly clear with this point -- that I HATE to talk with a guy like you who are just showing off his smartness, saying ironic words and showing arrogant attitude. Your aggressive behavior is not welcome here.
"tard" is a slang, use a dictionary. So what's your point? Picking out every "illness" in my expression, does it make you feel stronger?
Sorry I don't have more patience to look through your verbose comments, learn some respect and be polite before your talk.
Read this to solve your "size_t" argument.
http://stackoverflow.com/questions/1951519/when-to-use-stdsize-t
But I don't think it matter at all, use whatever type you want.
And please, leave those arrogant attitude and your cavil to yourself, they are irrelevant to the question.
> Well, if I'm not _shown_ the track it's hard to stay on it.I'm afraid this is your own problem. Please keep the discussion on the track and friendly, or just keep silence.
Best regardsZhiqian
> Subject: Re: [erlang-questions] Update with complicated data structure
> From: ok@REDACTED
> Date: Wed, 25 Nov 2015 17:13:23 +1300
> CC: erlang-questions@REDACTED
> To: on-your-mark@REDACTED
>
>
> On 24/11/2015, at 7:51 pm, YuanZhiqian <on-your-mark@REDACTED> wrote:
>
> > Hi Richard,
> >
> > Thanks for your elaborative comments. Some of the advices are helpful and I appreciate a lot for that; but some of them are not quite on the track ...
>
> Well, if I'm not _shown_ the track it's hard to stay on it.
> >
> > For example, regarding the array size issue, you see, it's just a sample where my point is focused on the assignment expression, so I use an array instead of a hash table which I actually have used in my project, for that would make the code messed up with less important parts. I am certainly not a C language tard = =
>
> "Tard"? What does that mean?
> https://en.wikipedia.org/wiki/Tardigrade ?
>
> >
> > And please allow me to clarify my purpose of this question, this is not an erlang v.s. c&c++ debate,
>
> That was understood; no clarification needed.
>
> > I am just facing an actual problem in real scenario, and need some practical advice.
>
> While it's not a C vs Erlang debate, it *is* a matter
> of trying to do things the C way in an Erlang program.
> >
> > So it is not that I insist in making erlang behave the same as imperial language, but that it is a real requirement in the project that I'm trying to solve.
>
> I doubt that very much. Requirements talk about what a program
> does, as seen from outside. How the collection of companies is
> held, whether as a list, as a gb tree, as a map, as an ETS
> table, or even in the process dictionary (for safety, that
> had better be the process dictionary of a separate process)
> should be entirely up to you. I have serious trouble
> believing in requirements that say
> "You must use a data structure that makes search
> and update take a long time."
>
> Your requirements may well say
> "Update the consumption of company X by D"
> but of course you haven't shown us the requirements.
>
> One thing may have struck you already.
> If you are using a relational data base,
> changing one field of one record at a time is
> a good way to run quite slowly. One way to get
> good performance out of RDBs is *batching*.
>
> Now if you kept the list of N companies *sorted* on increasing
> company_id, and if you had a *batch* of M companies to be
> updated, also in a list sorted on increasing company_id,
> then you can *merge* those two lists and produce a new list
> in O(N+M) time. (This is what old-timers used to do with
> tape drives before even CODASYL data bases.) But if you do
> it one company at a time, it's going to take O(N*M) time.
> If you use a gb_tree, O(lg(N)*M).
>
> So there is a really serious question about whether you really
> *HAVE* to update one field of one record, or whether you have
> a *batch* of fields, and possibly multiple updates.
> >
> > As for the naming issue ... ok you are right, but does it really matter?
>
> Yes, it does.
>
> > At least not as important in my case ...
> >
> > And you are asking me why I am using size_t instead of int, I don't know if I am right, but size_t seems an intended type for array indices,
>
> (a) It cannot possibly be. C existed long before size_t did.
> (b) The name *tells* you what it's meant for: it is meant for
> the *sizes* of objects.
> (c) Kernighan & Ritchie, "The C programming language", 2nd edition
> consistently uses int for array indexing. But what do they
> know? They only invented the language.
>
> > since it is unassigned,
>
> I think you mean 'unsigned', and that's actually bad.
>
> > and codes from google use size_t as well.
>
> Google invented Go. They did not invent C and are
> not authorities on how it was meant to be used.
>
> > Try to compile using int, but configure your error level to the most strict mode, turn on "warning as error" option, then you won't get the code compiled.
>
> I have no idea what you are talking about.
> Code that indexes arrays using int gets through gcc, clang,
> lint, and splint at the highest levels with no warnings.
>
> Good C compilers warn about using *char* as an array index,
> because the programmer has no way of telling beforehand
> whether char is signed or unsigned, so
> a[(char)255] might or might not involve a negative subscript.
> But invalidating int would mean breaking almost all the C
> code ever written for Unix.
>
> I just checked the source code for (original) vi, and yep,
> it uses int subscripts, including "tp[-1]", which is not
> actually an unusual thing to do in C (tp being a pointer
> after the beginning of an array), and no usable C compiler is
> going to treat that as an error.
>
> > So the point is, thanks again for your help, but unfortunately I am getting more confused with too much irrelevant comments.
>
> How about telling us what the actual requirements really
> actually are?
> How about explaining why you are using a list?
> I advised you to use a gb_tree (or something of that sort).
> Someone else suggested a new-fangled 'map'.
> Both are good suggestions. What's wrong with them?
> How many companies are you carrying information about?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20151125/1e9ca165/attachment.htm>
More information about the erlang-questions
mailing list