Java-kieli ja monet java-tekniikat on liian helppoja omaksuttaviksi ja uudetkin jutut oppii aivan liian nopeasti :( Ei mitään haastetta. Eri juttu se oli ennen vanhaan, kun sai rampata kirjastossa etsimässä millon Ralph Brownin kirjaa keskeytyksistä ja millon Björne Strousoupin C referenssiä, jotta osasi hallita asiat sen verran kuin työn kannalta oli pakollista.
Nykyään sovelluskehitys on pelkkää dokumenttien lukemista ja tekemistä, kun itse koodi syntyy hetkessä.
Java on liian helppoa
9
1723
Vastaukset
1. Pyri tekemään koodista alustariippumatonta ja noudattamaan kaikkia standardeja.
2. Pyri tekemään softasta helposti käyttöönotettavaa ja riippumatonta epästandardeista ratkaisuista. Pelkkä siisti käyttöjärjestelmäkohtainen asennuspaketti joka asentuu naxnax kaikkiin yleisiin käyttöjärjestelmiin.
3. Pyri tekemään softasta mahdollisimman robustia. Eli sen pitää toimia kaikissa erikoisissa tilanteissa kuten äärimmäisessä kuormituksessa tai äärimmäisillä datamäärillä.
4. Tee softasta aukotonta. Sitä ei pidä pystyä haxoroimaan ja kaikki virhetilanteet pitää käsitellä.
5. Pyri tekemään softasta mahdollisimman käytettävää. Niin graafisesti kuin komentoriviltä. Käytä hyväksi työpöytäympäristöjen coding standardeja.
6. Optimoi ohjelman suorituskyky niin, että se on käytettävää.
-Pyri siihen, että käyttöliittymä toimii reaaliajassa, esim. karttaohjelma jossa otetaan hiirellä kiinni ja pyöritellään asioita. Lagin pitäisi olla käyttäjälle pahimmassakin tapauksessa ohjainlaitteelta ruudun tapahtumiin alle 100ms. Tietysti esim. TFT:n 40ms lagit pitää huomioida yms.
-Aina kun käyttäjä painaa jotain nappia, pyri siihen että käyttöliittymä vastaa alle sekunnissa.
-Aina jos joku operaatio vie väistämättä yli 10s, tee joku suorituspalkki.
7. Edellisillä suorituskykyvaatimuksilla, minimoi laitevaatimukset. Joku 300MHz Celeron, 128Mt muistia on hyvä laitevaatimus.
8. Tee raskaat laskennat rinnakkaisesti ja aja käyttöliittymä omassa säikeessä. Tee softa skaalautumaan kännykästä palvelinklusteriin.
9. Optimoi virrankulutus. Profiloi softa esimerkiksi Valgrindillä paljon menee kellojaksoja, paljon tulee cache missejä, paljon luetaan massamuistista, paljon lähetetään tavaraa verkkoon ja jne. Ja tee algoritmit virrankulutus huomioiden. Ennakoi tulevaisuuteen, että prosessorien hyötysuhde ja suorituskyky kasvaa nopeammin kuin muiden komponenttien.
10. Minimoi tallennustilan tarve.
---
Saat haasteita kun hiot softaa täydellisyyteen.- Javaan?
Ihan kunnioitettavan lista olet kerännyt ohjelmistotekniikan kunnianhimoisia tavoitteita mutta miten nämä liittyvät erityisesti Javalla koodamiseen?
Yleensäkään millään tavalla koodarin hommiin tai kielen valintaan?
Tällaisiin asioihin vaikuttavat tekijät päätetään ihan muualla. Jos nyt ei ole kyseessä ihan yhden miehen "autotalliyritys" jossa päätökset joutuu tekemään yksin ja raja ohjelmistosuunnittelun ja koodauksen välillä hämärtyy pahasti. Javaan? kirjoitti:
Ihan kunnioitettavan lista olet kerännyt ohjelmistotekniikan kunnianhimoisia tavoitteita mutta miten nämä liittyvät erityisesti Javalla koodamiseen?
Yleensäkään millään tavalla koodarin hommiin tai kielen valintaan?
Tällaisiin asioihin vaikuttavat tekijät päätetään ihan muualla. Jos nyt ei ole kyseessä ihan yhden miehen "autotalliyritys" jossa päätökset joutuu tekemään yksin ja raja ohjelmistosuunnittelun ja koodauksen välillä hämärtyy pahasti."Ihan kunnioitettavan lista olet kerännyt ohjelmistotekniikan kunnianhimoisia tavoitteita mutta miten nämä liittyvät erityisesti Javalla koodamiseen?"
Kysyjä valitti haasteiden puuttesta, mutta kyllä niitä vaan keksii helposti. Se sitten riippuu tilanteesta onko Java oikea työkalu, suurin osa noista haasteellisuuksista on kuitenkin kieliriippumattomia.
- TRRY
Entäpä jos etsisit haasteita tekemällä jotain mielenkiintoista, etkä vain opettelemalla tekniikoita. Tekniikat on kehitetty ongelmien ratkaisua varten, joten etsi kiinnostava ongelma ja koita ratkaista se oppimiesi tekniikoiden avulla. Ei minustakaan Hello Worldien tulostelu ole kovin palkitsevaa. No ehkä Unlambdalla tai vaikkapa "99"-ohjelmointikielellä
http://home.san.rr.com/smov/99/ - Javakoodaaja
Outo väite !
Mutta tässäpä sinulle haastetta:
Pitäisi kirjoittaa javaluokka, joka olisi yleiskäyttöinewn siten, että se toimii sekä j2me että j2se -ympäristöissä.
Tarkoitus olisi:
a) toteuttaa samanniminen luokka sekä' j2me että j2se -käyttöön
JA
b) laajentaa StringBuilder -luokkaa uusilla hyödyllisillä metodeilla.
Valitettavasti j2me EI tarjoa StringBuilder -luokkaa. Lähin vastine olisi StringBuffer -luokka.
Kun javassa olisi EDES ifdef, kuten esim: näissä:
C, C , Delphi
niin voisi tehdä jotain tämän tapaista:
//$IDFEF j2me
TMyStringBuilder = class extends StringBuffer {
// luokan uudet metodit tähän.
}
//$ELSE
TMyStringBuilder = class extends StringBuilder {
// luokan uudet metodit tähän.
}
//$ENDIF
Ikävä kyllä javasta ei löydy edes IFDEF -ehdollista kääntämistä.
Tuon ongelman (IFDEFin puutteen) voi toki ratkaista kun käyttää kahta PC:tä, joista
toisessa NetBeans -kehitysympäristö (tähän käy periaatteessa sekä windows että linux, mutta monista j2me -työvälineistä, jotka on suunniteltu integroitumaan NetBeansiin, on tarjolla vain windowsversio, eli valitaan tähän windows-PC).
ja toiseen koneeseen linux samba.
nyt, hyödyntämällä linuxin symbolisia linkkejä:
ln -s /mikälaitetaannäkymään /minne
saadaan j2me ja j2se -projekteissa haluttaessa sama/eri versio tiedostosta osaksi projektia.
MUTTA voih, JAVA tarjoaa heti seuraavan ongelman kun yhden ratkaisee:
ikävä kyllä, sekä StringBuilder että StringBuffer on määritelty näin:
public final class StringBu...
ELI: Seuraavaksi mättää tuo final tuossa määrittelyssä, eli etpä periytä kummastakaan luokasta mitään!
Aiemmin Delphillä koodanneena huomaa nopeasti, että Java on äärimmäisen rajoittunut kieli, jossa Javan tekijät ovat päättäneet valmiiksi, mitä sinun sopii koodata ja mitä ei !
Samoin tyypittömät var -parametrit puuttuvat (vai pitäisikö laittaa muuttujaparametrit, vastakohtana arvoparametreille, näin käyttäisi suomenkieltä ainakin ohjelmointikieliriippumatrtomalla tavalla).
Lieneekö syynä tähän taas se, että Javan suunnittelufilosofian mukaan koodaajat ovat idiootteja, ja siksi mikä tahansa mikä saattaisi olla vaarallista, on kiellettyä.
Tyypittömällä muuttujaparametrillahan on se ikävä ominaisuus, että ilman lisätoimenpiteitä se mahdollistaisi sellaisen muistipaikan osoittamisen, joka on halutun muuttujan varatun tilan ulkopuolella, ja siksi potentiaalisesti vaarallista.
Tämä tosin olisi voitu välttää sillä, että Javaan olisi määritelty nuo tyypittömät muuttujaparametrit näin;
public void esimerkkimetodi(var Data; autosize int DataLength, int JotainIhanMuuta, char IhanEriAsia);
Tuossa siis, kun javassa yleensä erotetaan eri parametrit toisistaan pilkulla, niin tyypitön muuttujaparametrio erotettaisiin sen koon (aina tavuina !) määrittävästä int -tyyppisestä parametrista puolipisteellä; tästä sekä "autosize"-määreestä java -kääntäjä/tulkki tietäisi, että tuolle int DataLength:lle EI ohjelmoija anna mitään arvoa, vaan java -järjestelmä automaattisesti määrittäisi tuon tyypittömän data -parametrin koon tavuina ja täyttäisi automaattisesti tuon dataSize -parametrin arvon.
Tapa olisi käsittääkseni turvallinen,
Javassahan ei esim. luokkaviitteelle saa muuta epäkelpoa arvoa kuin null aikaiseksi mitenkään, ja null taas erikoistapauksena on java -runtimen helppo tunnistaa.
Eli siis: JOS em. esimerkkifunktiota onnistuisi joku kustumaan siten, että Data -muuttujaparametriin tarjottaisiin kutsuttaessa esim. alustamatonta taulukkoa (jonka viitteen arvo siis on null), niin silloin tuolle DataSize:lle java -järjestelmä antaisi automaattisesti arvon 0.
Tuo tietenkin edellyttäisi absolute -avainsanaa Delphin tapaan esim näin:
int[] DataAsIntegers absolute Data;
byte[] DataAsBytes absolute Data;
long[] DataAsLongs absolute Data;
Tällöin java -järjestelmän, jos oletamme, että Data:n koko tavuina on vaikkapa 25, pitäisi valvoa, että sallitut indeksit ovat:
DataAsIntegers: [0..5]
DataAsBytes[0..24]
DataAsLongs[0..2]
ja näiden ylitys tai alitus tietenkin tuottaisivat arrayIndexOutOfBounds -poikkeuksen, kuten Javassa on tapana.
Ohjelmoijalle lisää mukavuutta tarjoaisi toki Delphistä tutun High() -funktion tarjoaminen myös javakoodareille, eli High() siis palauttaisi:
high(DataAsIntegers) palauttaisi: 5
high(DataAsBytes) palauttaisi: 24
high(DataAsLongs) palauttaisi: 2
Toisin kuin Delphissä, sensijaan Low() -funktiota ei Javassa tarvita, koska Javan taulukot alkavat aina indeksistä 0, joten low() javassa palauttaisi aina 0, ja on siksi Javassa tarpeeton.
Toki, näiden ns. avointen parametrien yhteydessä Low() palauttaa Delphissäkin aina 0, mutta Delphissä Low() -argumentiksi voi antaa muutakin kuin avoimen parametrin, ja silloin Delphissä Low() voi palauttaa muutakin kuin arvon 0.- huoh
TAAS vaihteeks meidän delphi-kaveri itkee ifdef:n perään. Miksei homma toimi et teet rajapinnan ja vaikka Antilla määräät kumman käännät?
Ja mitä tulee tuohon high-metodiin niin tässä:
Tuon tekemiseen meni ~15 minuuttia ku en o ennen tehnyt juuri mitään generic:sseillä.
----------------------
import java.util.*;
public class Vertaa{
public static T high(Collection c){
T o = null;
if(!c.isEmpty()){
Iterator ite = c.iterator();
o = ite.next();
while(ite.hasNext()){
T o2 = ite.next();
if(o.longValue() < o2.longValue())
o = o2;
}
}
return o;
}
}
-----------
Ja esimerkki käytöstä:
----------------
import java.util.*;
public class Test{
public static void main(String[] args){
List doubleList = new ArrayList();
List intList = new ArrayList();
doubleList.add(1.0);
doubleList.add(2.0);
doubleList.add(7.0);
doubleList.add(4.0);
intList.add(1);
intList.add(2);
intList.add(3);
intList.add(4);
System.out.println(Vertaa.high(doubleList));
System.out.println(Vertaa.high(intList));
}
} - väärään vastaus
huoh kirjoitti:
TAAS vaihteeks meidän delphi-kaveri itkee ifdef:n perään. Miksei homma toimi et teet rajapinnan ja vaikka Antilla määräät kumman käännät?
Ja mitä tulee tuohon high-metodiin niin tässä:
Tuon tekemiseen meni ~15 minuuttia ku en o ennen tehnyt juuri mitään generic:sseillä.
----------------------
import java.util.*;
public class Vertaa{
public static T high(Collection c){
T o = null;
if(!c.isEmpty()){
Iterator ite = c.iterator();
o = ite.next();
while(ite.hasNext()){
T o2 = ite.next();
if(o.longValue() < o2.longValue())
o = o2;
}
}
return o;
}
}
-----------
Ja esimerkki käytöstä:
----------------
import java.util.*;
public class Test{
public static void main(String[] args){
List doubleList = new ArrayList();
List intList = new ArrayList();
doubleList.add(1.0);
doubleList.add(2.0);
doubleList.add(7.0);
doubleList.add(4.0);
intList.add(1);
intList.add(2);
intList.add(3);
intList.add(4);
System.out.println(Vertaa.high(doubleList));
System.out.println(Vertaa.high(intList));
}
}Eihän tuo high-homma tee lähellekkään sitä mitä tuos haettiin. Mut genericsien avulla ei tarvita tuota tyyppi parametria.
- ...tuli mieleen.
"... Javan suunnittelufilosofian mukaan koodaajat ovat idiootteja, ja siksi mikä tahansa mikä saattaisi olla vaarallista, on kiellettyä."
Juuri tuo minullekin tuli mieleen kun Javaan tutustuin.
- tosi kyllästynyt
kyllä ottaa päähä yoi java asennuksen homma. mun koneeseen on yritetty asentaa javaa,mutta ei onnistu millään .oliskohan kenelläkään tosi selkeää neuvoa.....
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ja taas ammuttu kokkolassa
Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.726348- 1385772
Helena Koivu on äiti
Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.4863654Ovatko naiset lopettaneet sen vähäisenkin vaivannäön Tinderissa?
Meinaan vaan profiileja selatessa nykyään valtaosalla ei ole minkäänlaista kirjoitettua tekstiä siellä. Juuri ja juuri s1202059- 391361
Suomi vietiin Natoon väärin perustein. Viides artikla on hölynpölyä. Yksin jäämme.
Kuka vielä uskoo, että viides artikla takaa Suomelle avun, jos Suomeen hyökätään. Liikuttavasti täällä on uskottu ja ved4021345- 731173
Sydämeni on sinun luona
Koko ajan. Oli ympärilläni ketä oli niin sinä olet vain ajatuksissa ja tunteissa. En halua muiden kosketusta kuin sinun471034Trump ja Venäjä
Huomasitteko muuten... Käytännössä ainoat valtiot, joille Trump EI eilen asettanut typeriä tariffejaan, olivat Venäjä ja110952Jatkuva stressitila
On sinun vuoksesi kun en tiedä missä mennään mutta tunteeni tiedän ainoastaan56950