• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Why aren't 'new' and '.' in the operator precedence table?

 
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Yeah - convincing them to use 4 bytes per character might have been a bit of a hard sell, back then.  But now, it feels like that's how they would have designed it if it were done today - or even twenty years ago.

To be fair, internally they could still use 1 byte per character for Latin-1 strings, and 2 bytes per character for utf-16 strings.  But a method like charAt() would return an int, not char.
 
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote: it should read:



Isn't that (and streams in general) just a new-fangled way to write a program horizontally, sideways... instead of vertically in the old-fashioned way?
I am sure I can write it with fewer steps and less IQ, the old-fashioned way - vertically down.
 
Saloon Keeper
Posts: 15619
366
  • Number of slices to send:
    Optional 'thank-you' note:

Anil Philip wrote:Isn't that (and streams in general) just a new-fangled way to write a program horizontally, sideways... instead of vertically in the old-fashioned way?


No. Declarative programming has benefits that go beyond "preference of coding style".

I'm not saying it is better than imperative programming in every case, and I'm also not saying that there aren't cases where imperative programming is better.

I was simply giving an example of one of many ways you can fill an array with three copies of a string.

I am sure I can write it with fewer steps and less IQ, the old-fashioned way - vertically down.


Great. Do it the way you want.

The only remark I have is that declarative programming doesn't necessarily take "more IQ". It's just a different perspective. If you can't appreciate it, you're probably just not accustomed to it.

Oh, maybe a second remark. You might be surprised to learn that not only is declarative programming not "new-fangled", imperative programming isn't the "old-fashioned way" either. But it may appear that way if one mostly uses languages like C and Java.
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
The format can be horizontal or vertical, really.  A short stream snippet can be horizontal, as in that example... but as they get longer and more involved, I find it much more useful to format vertically, like this:

But that's just an aesthetic issue.  And this particular problem isn't necessarily the best showcase for what streams are good for.  Especially when we (or I, at least) aren't really sure what the goal of the original code was, anyway.  We've just been making guesses.  The whole "treating Strings as arrays" subtopic came from my own incorrect guess as to what you meant.  

Anyway, streams are very powerful, and worth getting comfortable with.  But not required in all cases where we might possibly use them, no.
 
Marshal
Posts: 28262
95
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I've noticed that when I look through my old code, I notice code sections which go through the entries in a List and, for those satisfying a certain condition, do such and such, and so on. I find that if I convert those to use stream processing, the result looks cleaner and moreover, it's more self-explanatory.

Case in point: There's some code which, whenever an entity is changed, all the other entries related to it need to be modified appropriately. For a long time I had been thinking that those modifications didn't need to be done sequentially, but could be done in separate threads. And when I tracked down the code and changed it to use streams, it turned out that all I had to do was to use ".parallelStream()" instead of ".stream()". No need to write code to build and start threads, just let Java do all of that.
 
Anil Philip
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Mike Simmons wrote:Especially when we (or I, at least) aren't really sure what the goal of the original code was, anyway.  We've just been making guesses.  The whole "treating Strings as arrays" subtopic came from my own incorrect guess as to what you meant.



Sorry, I thought I clarified it.
It started with our discussion of 'new', '.' and then '[ ]' not in the precedence table.
I wanted to see the precedence between '[ ]' and 'new'.
Playing with it, I tried

I was wondering how like in (C++?) one could create an array of objects prepopulated by the constructor and not just an empty array.




 
Anil Philip
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:It's just a different perspective. If you can't appreciate it, you're probably just not accustomed to it.
Oh, maybe a second remark. You might be surprised to learn that not only is declarative programming not "new-fangled", imperative programming isn't the "old-fashioned way" either. But it may appear that way if one mostly uses languages like C and Java.


By programming sideways, I meant the stream pipeline, I wasn't referring to lambdas which are useful in themselves.
I like lambdas and streams when they are used as building blocks like Legos.
But in this case, it is much easier to write and understand when I write vertical code.



Even after (barely ) passing the certification, I wouldn't be able to write the stream pipeline code you wrote above to do the same.
I am certain that most Java developers out there would be unable to either.
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Ah, I see.  Well, the only way I see to do something like that in one expression is something like this:

Here we need two pairs of [] braces, one to create the String[] and another to access element [2].  The "new" and the first "[]" are part of the array creation expression, and the [2] is an array access expression.  Those are all the same precedence, the highest level, and they work left to right.  So, it all works out as expected.
 
Marshal
Posts: 79422
377
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:

Anil Philip wrote:. . . barely . . .

A pass is a pass is a pass. Don't say, “barely.”

Th cert exams don't necessarily test your ability to write good code. I suggest you work through some Streams examples. For example, populate a List with integers, and then count how many odd numbers there are in the List. No, start by getting your Stream to add all the numbers. Then count odd numbers.
 
Campbell Ritchie
Marshal
Posts: 79422
377
  • Number of slices to send:
    Optional 'thank-you' note:

Mike Simmons wrote:Ah, I see.  Well, the only way I see to do something like that . . .

I never thought that would work, but JShell seems only too happy to run it.
 
Stephan van Hulst
Saloon Keeper
Posts: 15619
366
  • Number of slices to send:
    Optional 'thank-you' note:

Campbell Ritchie wrote:I never thought that would work


Why not?
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Campbell doesn't trust my code  
 
Campbell Ritchie
Marshal
Posts: 79422
377
  • Number of slices to send:
    Optional 'thank-you' note:
Because I was mistaken
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |