Interface - Hvad er sådanne enkle ord

Interface - Hvad er det, det har brug for, Typer af grænseflader

4. januar 2021.

Hej, kære blog læsere ktonanovenkogo.ru. I den æra af massedomputer er det vigtigt at holde op med de nyeste trends og konstant genopfylde kløften i viden.

Det er vigtigt, at grænsefladen svarer til målene og konteksten. Hvis dette er samspillet mellem en specialist med en computer, så er det vigtigste evne til at give information og opfylde opgaverne. For en almindelig bruger har den ikke kun teknisk, men også æstetisk værdi: Arbejde med det skal være behageligt og forståeligt.

Du ønsker ikke at komme på tværs af behovet for at gå ned? I dag overvejer vi et andet udtryk i forbindelse med pc.

Jeg vil forsøge at forklare sådan en ting som en grænseflade: Hvad er og hvorfor er det nødvendigt. Så lad os begynde.

Grænsefladen er ...

Ligesom alle nye fashioned sætninger kom ordet "interface" til os fra det engelske sprog. Oversat interface angiver " Kontaktstedet "

Grænsefladen er et sæt værktøjer, der gør det muligt for brugeren at interagere med computerens operativsystem, en mobilenhed eller andre typer udstyr.

Grænsefladen er ...

Som sådanne værktøjer Interaktioner kan handle:

  1. tekstfelter;
  2. knapper og flåter;
  3. drop-down lister;
  4. pop-up tips;
  5. Switches;
  6. Elementer i menuen på programmet eller webstedet;
  7. og meget mere.

For at være bedre klar, hvilken slags frugt er denne grænseflade, overveje et visuelt eksempel. Antag at du beslutter dig for at tage på ferie i fjerne kanter og bestille et hotel på forhånd via internettet.

Kom på webstedet, og der forventer du flere grænseflader: Søg, visningsresultater, indtastning af personlige data, betaling. I hvert trin af interaktion med hotelreservationsstedet opererer brugeren med data og udfører visse handlinger.

Hvorfor har jeg brug for en grænseflade? Alt er enkelt, mere end nogensinde: jo mere hensigtsmæssigt at bruge programmet, webstedet og andet produkt, de lykkeligere brugere.

Den venlige grænseflade giver dig også mulighed for at rejse salg på kommercielle steder, da besøgende ikke lukker fanen i de første sekunder efter at have brugt webstedet.

Steder med godt design er større populære blandt brugere, mere besøgt, og derfor bringe den bedste indkomst til deres ejere.

Typer af grænseflader

Interfacet er sædvanligt at underdivere på følgende typer:

  1. Kommandolinje . Dette er den ældste og mest tidskrævende måde at interagere mellem brugeren og den personlige computer. På samme tid forbliver kommandolinjen den mest pålidelige type grænseflade.
    For brugere er grænsefladen grundlaget for at arbejde med en pc eller en telefon. Fra hvor simpelt eller komplekse dette system, vil bekvemmeligheden ved at styre enheden afhænge af. Udviklere kan ændre systemstrukturer til komplekse opgaver. Uerfarne brugere er det bedre at købe enheder med en klar grænseflade for at lette deres arbejde.

    Kommunikation med maskinen opstår på sit sprog. Kommandolinjen bruges i operativsystemer beregnet til professionelle brugere: For eksempel i BIOS.

  2. Grafisk grænseflade . Det er netop det, der menes i dag under ordet "interface". Den anvendes i alle operativsystemer, programmer, websider.
    Smartphone.

    Med en grafisk grænseflade er absolut alle pc-brugere konfronteret. For mere praktisk interaktion anbefales det at bruge en computermus.

  3. Tegn interface . Den hurtige udvikling af teknologier er blevet en af ​​grundene til udseendet af en gestusgrænseflade. Dette omfatter sensoriske skærme, joysticks, stylus og andre elementer.
  4. Voice Interface. . Taler udtrykket "OK, Google" og derefter udtale søgningen, interagerer du med stemmegrænsen af ​​smartphone eller tablet operativsystem.
    Command Line Interface.

    Denne type optrådte også for nylig takket være den hurtige udvikling af teknologier.

    Men i dag har det en betydelig popularitet, da det giver dig mulighed for at løse en række vigtige opgaver og administrere enheder (hvad er det?) - Mobil enheder, biler, husholdningsapparater, computere - med stemmekommandoer.

Hvad skal der være grænsefladen

Hovedopgaven for enhver grænseflade - Nemt bruge Specifikt program, sted eller lignende produkt.

For eksempel, når man udvikler en webportal, anbefales at gøre fokusere på følgende elementer :

  1. Det optimale antal viste elementer;
  2. tilpasningsevne til desktop og mobile enheder;
  3. Tilstedeværelsen af ​​knapper af populære sociale netværk;
  4. optimale ikoner og knapper;
  5. Praktisk form for registrering;
  6. Intuitiv placering af menupunkter;
  7. Tilstedeværelsen af ​​farve eller information accenter;
  8. søgesystem på webstedet;
  9. Om nødvendigt tilgængeligheden af ​​kontaktdata.

Et lyst eksempel på en godt gennemtænkt interface er ktonanovenkogo.ru. På webstedet, en god farveopløsning, en intuitiv menu, tilstedeværelsen af ​​intern søgning, viser artikler efter offentliggørelsesdatoen, hvilket gør brugen af ​​ressourcen hurtigt og behageligt.

Det er alle, kære venner. Nu ved du, at grænsefladen er, simpelthen taler, den eksterne skal af programmer eller websteder, hvilket gør det lettere at bruge dem.

Jeg håber, at efter at have læst artiklen, vil du ikke længere have nogen spørgsmål. Tillad under alle omstændigheder at invitere dig til kommentarer til at aftage på dette emne med andre bloglæsere KTONANOVENKOGO.RU.

Og for at konsolidere viden foreslår jeg at se en video om den nye grænseflade til Android fra Samsung:

Held og lykke! At se hurtige møder på siderne i Ktonanovenkogo.ru

De fleste moderne grænseflader er designet til erfarne brugere. Kranerne blev heller ikke straks for alle velkendte. Tidligere blev siderne af kontakten bestemt mærket rød og blå - for at være klar, hvor det er koldt, og hvor varmt vand. Nu er vi vant, og flere og flere kraner frigives uden mærkning. Sandsynligvis huskede de endelig hvilken side der strømmer.

Med webgrænseflader var det omtrent det samme. I begyndelsen af ​​nul var der en skiorfisme - grafikken imiterede de virkelige verdensobjekter. Hvis webstedet var knappen, så det ud som en reel volumetrisk knap. Det var forståeligt for de fleste mennesker, der købte deres første computere.

Men øjeblikket kom, da nye brugere er blevet mindre. Enhver, der ønskede at begynde at bruge en computer og internettet, er allerede blevet mestret i teknologi. Og behovet for realistiske grænseflader forsvandt gradvist.

Nu, i stedet for det detaljerede "menu" -ikon, bruges den såkaldte burger normalt med signaturen - tre vandrette strimler. Og vi ved helt godt, hvad de betyder. Vi ved også, at websteder normalt læser fra top til bund. Og behøver ikke nogen pile for at forklare. Moderne grænseflader er designet til erfarne brugere og mere koncis.

Programmer.

Grænsefladen kan betragtes som en form for kontrakt mellem systemet og et eksternt miljø. Som en del af computerprogrammet er systemet funktionen eller modulet, og "Miljøet" er resten af ​​projektet. Interfacet beskriver formelt, hvilke data der kan overføres mellem systemet og miljøet. Og "implementering" kan beskrives som "minus interface system." På sprog som Haskell-grænseflader kan være ekstremt specifikke. Og på sprog som Python er de tværtimod meget almindelige. Den valgte grænsefladetype kan påvirke størrelsen af ​​den oprettede tekniske gæld og programmørens ydeevne. Sådan beregnes den er skrevet nedenfor. Der vil også blive foreslået en metode til evaluering og sammenligning af forskellige grænseflader. Baseret på disse sammenligninger kan du se sig selv for at bruge sprog- eller softwareværktøjet.

Det vigtigste koncept i udviklingen af ​​software - koncept

Interface.

. Denne artikel handler ikke om Java-grænseflader, men om grænseflader i software design. Og i mindre grad - på grænseflader i omverdenen. Selvfølgelig anvendes mange andre vigtige begreber i udviklingen af ​​software, men jeg tror, ​​at de fleste af dem på en eller anden måde afhænger af grænsefladens betydning.

Hvad er grænsefladen?

De fleste af os er bekendt med to korte formuleringer:

Grænsefladen er en kontrakt mellem systemet og et eksternt miljø. Grænsefladen er et parringssystem med et eksternt miljø.

Interface = System ∩ Omgivelser

Definition med parring er egnet, hvis systemet er et fysisk objekt. Begge definitioner er meget abstrakte, så lad os overveje dem på trykeksemplet på tastaturet:

Her er systemet en bærbar computer, miljøet - hænder (såvel som kattens poter, klatring på tastaturet). Følgelig skal grænsefladen være en del af samspillet mellem hænder og en bærbar computer, som ikke kun kan henføres til nogle af parterne, men kun til begge. Normalt tænker vi på hænderne, og tastaturet er adskilt, så de nøjagtige grænser for grænsefladen i dette tilfælde er genstand for den filosofiske tvist. Du bestemmer: Uanset om det er tastaturet som helhed eller individuelle atomer, der interagerer med hinanden, når fingrene og nøglerne kontakter.

Sandsynligvis vil du blive overrasket over, hvordan dette eksempel korrelerer med definitionen af ​​grænsefladen som en kontrakt. I dette tilfælde mente aftalen en aftale, at på det tidspunkt, hvor vi brugte nok indsats, da de huskede placeringen af ​​nøglerne og muskelhukommelsen blev omarbejdet. En række nuancer er forbundet med traktaten. For eksempel har du ved at trykke på og holde tasten en anden værdi sammenlignet med en simpel engangspresse.

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

:

add_numbers. 

UNSIGNED INT, UNSIGNED INT); void other_function (tomrum) {add_numbers (3.4);} UNSIGNED INT ADD_NUMBERS (UNSIGNED INT A, UNSIGNED INT B) {Return A + B;} INT Main (tomrum) {Add_Numbers (9.99); Returnere 0;}

Anvend den samme farve differentieringsteknik

Bukser

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

At beskrive miljøet, systemet

og interface:

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

Systemet under overvejelse her består af en funktion

. Hvis du siger, at du kan overveje som en separat system hovedmetode -

Andre_funktion.

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

- Så vil du være rigtig. Men for enkelhed overvejer vi en funktion

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

.

Isoleret system. Det er også tilrådeligt at overveje en del af konverteringsgrænsefladen til

Som du kan se, tilføjes det fjerde koncept her: "Implementering". Det er ret vanskeligt at diskutere emnet for grænseflader uden at tage hensyn til specifikke implementeringer. Lad os definere dette udtryk: Implementering er et minus interface system. Implementering = system ∖ interface

Implementering = system ∖ (system ∩ miljø)

Jeg må indrømme, at jeg aldrig har haft en sådan definition af implementeringen før. Men dette er en uundgåelig udvidelse af et sæt interface definitioner, der har en række fordele. Hvis du er en fattig elev og forbereder dig til eksamen, så har din lærer aldrig hørt om denne definition. Jeg vil ikke blive overrasket, hvis det vil modsige enhver taxonomi af objektorienteret programmering. Men selv i dette tilfælde vil jeg ikke ændre den. Lad fans af OOP omskrive deres abstracts i overensstemmelse med min definition.

Det fører til gengæld os til den næste logiske konklusion: Når vi taler om grænsefladerne i det fysiske system, forestiller vi os normalt "implementering" af dette system i form af et enkelt fysisk objekt. Det ville trods alt være mærkeligt at overveje den "rigtige" implementering uden at tage hensyn til knapper, skærme eller andre komponenter. Og det skubber os for at overveje grænsefladen mere som en "aftale" og ikke en kombination af fysiske genstande. Det er i form af et sæt løfter, garantier eller noget som ...

.

Kontrakt mellem systemet og miljøet

Interface som kontrakt

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

Hvis du overvejer funktionsgrænsefladen

  • I form af en kontrakt vil garantierne være sådanne: Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion Fungere
  • Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion eksisterer. Det har kun to parametre, som hver er usigneret .
  • Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion int. Det har kun to parametre, som hver er usigneret .

Returnerer kun en usigneret

  • Interfacet i denne funktion fortæller ikke os noget: Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion ;
  • Om afbrydelse af udførelsen Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion ;
  • om den asymptotiske kompleksitet af rangetiden Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion ;
  • På antallet af ledig hukommelse, der kræves for at starte Det har kun to parametre, som hver er usigneret ;
  • Om den specifikke gennemførelse af usigneret

På bivirkninger (hukommelsesfordeling, ændring af globale variabler).

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

Grænsefladen beskrevet ovenfor

kendt under typen af ​​funktion

Prototype.

. I tidligere versioner af K & R C blev en svagere form for beskrivelse af grænsefladerne brugt:

usignerede int add_numbers ();

Definition af grænsefladen som en kontrakt er meget praktisk til programmering. Efter alt består de fleste programmerer opgaver i at bestemme og anmode om sæt af aksiomer. Primære og endelige forhold giver nogle egenskaber eller adfærd. Før to parter binder et forretningsforbindelse med hinanden, forbereder de kontrakten. Det formulerede det endelige resultat, betalingsbeløbet og tidslinjen. Det fastsætter også betingelserne for tidlig opsigelse, refusion og omkostninger. Hvis kontrakten overtrædes, konverterer situationen retten eller voldgift. Men hvis du har glemt noget at angive i kontrakten, kan overraskelser opstå.

Med computerprogrammer alle de samme. Moduler og funktioner siger, at de har brug for og (nogle gange), hvad de vil blive givet til gengæld. Overtrædelsen af ​​denne kontrakt vil føre til en kompileringsfejl, til en fejlfejl, til fejl i applikationen, systemet, kvalitetskontrolværktøjerne og manualens ledelse. Jeg vil endda sige, at definitionen af ​​grænsefladen som en kontrakt ikke er metaforisk. Her er de samme principper som i den kommercielle kontrakt, selv om det ikke er så detaljeret.

Patenter, ophavsret og grænseflader

Jeg vil ikke give dig råd på lovområdet. Måske sagde noget fra mig selv vil modsige lovgivningen. Alt det følgende er forfatterens private mening.

Så jeg er tilbøjelig til

bogstaveligt talt

Overvej grænsefladen som en "kommerciel kontrakt" mellem to enheder. Jeg understreger - jeg anser det ikke for en metafor. Jeg behandler især denne fortolkning af specialister i teorien om computing maskiner og ophavsretlige demonstranter.

Skal interfacepatentet? I betragtning af hans definition som en kontrakt mellem systemet og miljøet mener jeg, at brugen af ​​patenter ville være en fejltagelse. Og tilsyneladende støtter eksisterende retspraksis min stilling. Men husk på, at ordet "interface" bruges meget bredt, og ofte overhovedet i den forstand, som jeg har beskrevet ovenfor.

Skal jeg beskytte grænsefladen ved ophavsret? Igen, givet den "kontraktlige" natur, mener jeg, at grænsefladens "kildekode" skal være genstand for ophavsret. Samtidig bør ophavsretten ikke anvendes på de aspekter af grænseflader, der gør dem specielle. Det er nok at beskytte kildekoden eller et håndskrevet billede, men ikke garanti eller begrænsninger. Hvis garanti- eller grænsefladens begrænsninger bliver uadskillelige fra nogen af ​​de dele af dens kode, skal disse dele berøves beskyttelsesretten.

Jeg foreslår en simpel test, der giver dig mulighed for at sætte pris på, om det er nødvendigt at beskytte med ophavsret.

Hvis du gerne vil beskytte en slags attributsæt, herunder eventuelle komponenter fra en tredjepart, på nogen måde, der bruges af grænsefladen, kan du altid oprette en passende udskiftning. Udskiftning implementerer samme interface og med succes brugt i software fra en tredjepart uden ændringer af denne software selv, samt uden overtrædelse af enhver ophavsret. Hvis udskiftning vil føre til ophavsretlige overtrædelse eller indebære ændring af software fra en tredjepart eller forværre funktionalitet, så er attributtet for aggressivt og skal reduceres.

Jeg tror, ​​at ved hjælp af denne test er det tilrådeligt at kontrollere selv om patenterbarhed. Bemærk venligst: Formålet med testen er at bestemme ekstremt

Inappolition.

Beskyttelse ophavsret eller patent. Han vil ikke hjælpe med at løse det

følge efter

Drej beskyttelsen. Derudover er denne test kun min mening, og ikke en lovgivningsmæssig handling eller en lov.

Jeg vil også bemærke, at ethvert kriterium, der betragtes som en del af grænsefladen på samme sprog, måske ikke er det på et andet sprog. For eksempel, i Java, påvirker proceduren for deklaration af funktioner ikke udførelsen af ​​programmet. Og hvis du ved et uheld siger, at rækkefølgen af ​​funktioner i filen ikke betyder noget, vil den være en fejl i forhold til programmet på Python: 

Def foo (): print ("ASDF") Def Foo (ABC): Print (ABC) FOO ("LOL")

Alle disse samtaler om lovene mindede mig om

Oracle mod Google

. Ifølge det givne link kan du finde interessante detaljer for udviklere, så jeg vil stole på dem i min analyse. I betragtning af alle aspekter ser jeg ikke grundene til at være uenige med sagens beslutning til fordel for Oracle. Jeg kan ikke sige, at de ubetinget støtter dem, da vi ikke er så tilgængelige ikke så mange dele af sagen.

Jeg tror, ​​at mange bekymrede over, at der oprettes et præcedens, hvilket tillader elementerne i grænsefladen at beskytte patentet eller ophavsret. Bare det tilfælde, hvor min test ikke ville blive bestået. Distriktsdomstolen har truffet beslutning: "API's struktur, sekvens og arkitektur kan beskyttes af ophavsret." Jeg tror ikke, at dette er et problem, fordi "strukturen, sekvensen og arkitekturen" i sin definition fuldt ud vil gennemgå min test. Jeg vil give et par uddrag fra artiklen om linket ovenfor:

"Distriktsdomstolen konkluderede, at" der er kun en måde at skrive "annoncer til at interagere med Java. Hvis det er tilfældet, er brugen af ​​de samme annoncer ikke underlagt ophavsret. Google bestrider ikke, at de kunne skrive deres egne API'er for at få adgang til Java, med undtagelse af tre. " Endelig er "i Google anerkendt, at de bogstaveligt talt kopierede annoncer."

Jeg tror, ​​at Domstolen accepterede den rigtige beslutning, konkluderer, at grænsefladens unikke egenskaber ikke skulle beskyttes. Derudover anerkendte Google "bogstavelig" kopiering. Hvis dette betyder copypasting, herunder alle huller og stavefejl i kommentarerne, så anser jeg det for en krænkelse af rettigheder. Selvom grænsefladen ikke kan beskyttes, bør den ikke forstyrre beskyttelsen af ​​individuelle kreative udtryk.

Jeg ved kun om denne retssager kun fra åbne netværkskilder, men tilsyneladende er den oprindelige Java-kode helt kopieret til Google, herunder grænseflader. Det ser ud til, at de selv troede, at det var nødvendigt at licentere deres brug af Java, da det var genstand for forhandlinger om licensaftaler med Sun før 2010. Men disse aftaler mislykkedes, efter solen blev købt af Oracle. Ikke desto mindre fortsatte Google at bruge de "bogstavelige" kopier af koden, som klart ikke gik til sin fordel ved retssagen. Jeg formoder, at deres advokater vidste om svagheden af ​​deres stilling, så de valgte en beskyttelsesstrategi baseret på den legitime efterspørgsel efter ikke-spredning af ophavsret til grænseflader. De håbede at vinde sagen på bekostning af repræsentationen af ​​grænsefladen i form af kildekoden og dens tilknytning til et mere filosofisk koncept.

Hvad er "modul" eller "abstraktion"?

Med ordet "modul" i mit hoved er der et hovedstadsbillede af posten. Denne illustration viser godt betydningen af ​​grænserne for modulet og dets interaktion med miljøet. Cube-grænsefladen begrænser interaktionen mellem det ydre miljø med indholdet af kuben. Du vil ikke være i stand til at omgå grænsefladen, så du skal holde "reglerne i spillet" pålagt det. Endelig er der intet inde i terningen, men det er ligegyldigt: det er vigtigt ikke dets indhold, men en grænseflade.

Et andet eksempel: Cellemembranens struktur. Forskellige komponenter giver kun de nødvendige stoffer gennem membranen og kun når det er nødvendigt.

I forbindelse med denne artikel vil jeg bruge udtrykkene "moduler" og "abstraktion" som synonymer. Selvfølgelig vil den forklarende ordbog ikke være enig med mig, og selv på forskellige programmeringssprog har disse vilkår en anden betydning. Men i dette tilfælde er jeg kun interesseret i, at begge disse enheder kan ses som et system, som det forstås i denne artikel. Det vil sige, at abstraktioner og moduler kan bestå af en grænseflade og implementering.

Du kan læse en separat funktion af modulet i C, "modulet" - i Python, klasse eller pakke - i Java. Noget, hvis det kun havde en ekstern grænseflade og "skjult" implementering. Desuden kan der være en konsekvens af sprogets regler eller endog en programmørens beslutning.

Tørring abstraktion.

Så vidt jeg ved, ideen

Dumpy Abstraktioner fremsætter Joel Spolski

. I hans essay er der nogle gode eksempler, men jeg vil gerne medbringe min egen. I programmeringen opstår begrebet "kort" ofte: repræsenterer datastrukturen bestående af par nøgler og værdier. Vigtig grænse: Kortet sikrer, at alle nøgler skal være unikke. Et forsøg på at optage en ny værdi for en eksisterende nøgle vil resultere i en fejl eller overskrive den tidligere værdi. Bundlinjen er, at nøglerne ikke skal duplikeres. Oftest kræver programmørerne et ønske om at sortere alle disse nøgler. Og da kortene ikke kan garantere en vis række sorteringsnøgler, er det nogle gange nødvendigt at undre sig over, hvilken rækkefølge de vil være efter busting? Dette er konsekvensen af, at kortinterfacet ikke tillader sorteringsgarantier. Og selvom det menes, at det ikke betyder noget, men i praksis, vil jeg stadig sortere. Så det er nødvendigt for en mere effektiv dataorganisation for eksempel at lette verifikationen af ​​eksisterende nøgler.

Sorteret Data Brute Force kan give et helt andet resultat sammenlignet med tilfældige data overvældende. Antag at du skal finde minimumsværdien på listen: 

min = null; liste = map.getmapkeys (); for (emne i listen) {hvis (min == null) {min = vare} ellers hvis (vare <min) {min = min; / * Denne linje har en fejl * /}}

Afdeling

Ellers hvis.

Det vil aldrig blive udført, hvis dataene er sorteret stigende. Selvom du begynder at tjekke fra en tilfældig placering af listen, vil programmet aldrig kollidere med denne streng. Og dette er et stort problem, da hvis du ændrer implementeringen af ​​kortet, og det ikke vil returnere sorteret nøgler, vil din kode pludselig blive udført på en fejlfejl. Og da du helt vil glemme denne kode og bomben gemt inde i den.

Jeg vil gerne tilbyde min egen definition af abstraktionslækage.

Abstraktionslækage (abstrakt lækage) kaldes situationen, når implementeringen kan påvirke miljøet, da det ikke var angivet af grænsefladen.

Ifølge denne definition,

Næsten hverken

Abstraktion - vejrtrækning. Det er trods alt, at beskrivelsen i grænsefladen af ​​alle typer miljøpåvirkninger kun giver mening i de strengeste matematiske systemer. Og som for fysiske systemer, så kan du blive husket

.

Theorem Gödel om ufuldstændighed

Tanken om hullerne i de fleste abstraktioner er ikke urimelig. Dette betød Joel Spolski i hans "loven om lækage abstracts":

"Alle ikke-trivielle abstraktioner er i en vis grad en holey."

Når alle abstraktioner læner sig, hvad skal man tale om? Der opstår kun problemer, når en del af miljøet begynder at stole på en af ​​de uforudsete måder at eksponere for systemet. Det handler om sådanne lækager, som alle siger.

Dette fører til vidtrækkende konsekvenser, ikke kun fra ordinære bugs synspunkt, men også inden for sikkerhed. Med fysiske systemer, hvor der er lækager i det ydre miljø, kompromitterer sikkerheden, udtrykket "

Sidekanalangreb

" I kombination med en erklæring om, at alle abstraktioner af hullerne, fører det til konklusionen:

Hver fysisk implementering af kryptosystemet er sårbar over for tredjepartsangreb.

I betragtning af alt ovenfor kan denne ide forlænges ikke kun til fysisk, men også på emulerede implementeringer.

Evaluering og sammenligning af grænseflader

Som vi allerede har set ovenfor, er i grænseflader på C sæt som typen af ​​returværdi og antallet af parametre, der kan overføres. Hvad med Python? Jeg bruger udtrykket "interface" i overensstemmelse med artiklens sammenhæng, det vil sige i bredere forstand sammenlignet med det, de skriver i bøgerne om "grænseflader" i Python. 

DEF ADD_NUMBERS (A, B): Return A + BPrint (Add_Numbers (3,1)) Print (Add_Numbers ("ABC", "Def"))

På dette sprog skal vi formalisere typer af funktionsgrænseflade. Det forenkler definitionen og opkaldsfunktionen, da det er nødvendigt at behandle mindre information. På den anden side begrænsninger, som du kan udføre checken for søgen efter fejl mindre.

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

Jeg tror, ​​du har brug for noget at sige om vurdering og sammenligning af forskellige kendetegn ved grænsefladen fra synspunktet om informationsoverførselsmetoder. Du kan evaluere både en bestemt grænseflade og et sæt af alle grænseflader, der kan implementeres på dette sprog. Lad os huske vores eksempel med

Og vi vurderer, hvor meget information vi kan passere gennem grænsefladen og omgå det, ved hjælp af abstraktionslækage. Via grænsefladen
Ved at gå rundt i grænsefladen Beskrivelse af egenskaber. Ved at gå rundt i grænsefladen Beskrivelse af egenskaber.
Antal mulige tilstande Type parameter 1. 1 (usigneret int) Tilstand af global variabel
(Antal globale variabler) * (antal stater af globale variabler) Type parameter 1. Type parameter 2. Filsystem
Antal statssystemstatus Type parameter 1. Type returneret værdi Processor bruger tid
Ikke begrænset Parameterværdi 1. 2 ^ (tæller i usigneret int) State of Kuchi.
Antal stater Parameterværdi 1. Parameterværdi 2. Mange andre ...
... Parameterværdi 1.

Returværdi

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

Og der er en række ting, der kan kommunikere med

Via Python Interface. Informationsoverførsel via Python Interface
Ved at gå rundt i grænsefladen Beskrivelse af egenskaber. Ved at gå rundt i grænsefladen Beskrivelse af egenskaber.
Antal mulige tilstande Overførsel af oplysninger omgå Python-grænsefladen 1 (usigneret int) Filsystem
(Antal globale variabler) * (antal stater af globale variabler) Overførsel af oplysninger omgå Python-grænsefladen Type parameter 2. Processor bruger tid
Antal statssystemstatus Overførsel af oplysninger omgå Python-grænsefladen Type returneret værdi State of Kuchi.
Ikke begrænset Overførsel af oplysninger omgå Python-grænsefladen 2 ^ (tæller i usigneret int) Mange andre ...
Antal stater Overførsel af oplysninger omgå Python-grænsefladen Parameterværdi 2. Tilstand af global variabel
... Overførsel af oplysninger omgå Python-grænsefladen

Praktisk talt uendelig

Og nu kig på antallet af interface typer, som vi kan beskrive i Haskell: 

Add_numbers :: int> int -> intadd_numbers 3 4 = 7main = print (add_numbers 3 4)

Alle disse er nysgerrige filosofiske ræsonnement, men hvordan relaterer de til at skrive software? Nå, lad os starte med det faktum, at grænsefladerne i programmeringen omgiver dig fra alle sider, selvom du ikke er opmærksom på det. For eksempel, hvis du programmerer på Java, skal du eksplicit navngive grænsefladerne afhængigt af deres formål. Og på andre sprog er de også til stede. Lad os overveje et eksempel på en grænsefladefunktion

I betragtning af denne kode, grænsefladen

Kan få følgende oplysninger: Overførsel af oplysninger via Haskell-grænsefladen
Ved at gå rundt i grænsefladen Beskrivelse af egenskaber. Ved at gå rundt i grænsefladen Beskrivelse af egenskaber.
Antal mulige tilstande Overførsel af oplysninger ved hjælp af Haskell-grænsefladen Type returneret værdi Processor bruger tid
(Antal globale variabler) * (antal stater af globale variabler) Overførsel af oplysninger ved hjælp af Haskell-grænsefladen 1 (int) Processor bruger tid
Antal statssystemstatus Overførsel af oplysninger ved hjælp af Haskell-grænsefladen Effekt på processor / hukommelsescache Mange andre ...
Ikke begrænset Andet ...
Antal stater 1 (værdi 3)
... 1 (værdi 4)

Mindst 2 ^ 30 [1]

  • For en bestemt grænseflade på dit valgte sprog kan du også evaluere antallet af unikke måder at overføre information på:
  • gennem grænsefladen;

Ved at gå rundt i grænsefladen gennem abstraktionslækage.

  • Du kan også være opmærksom på følgende:
  • Hvor mange begrænsninger du kan bruge inden for dette sprog ud fra det mindste og maksimale antal oplysninger, der overføres via grænsefladen;

Hvilke instrumenter giver dette sprog for at forhindre interaktion til grænsefladens bypass.

Programmer.
Lad os analysere på denne måde den grafiske brugergrænseflade, hvor det er muligt at ændre mapperne: Overførsel af information via GUI
Ved at gå rundt i grænsefladen Beskrivelse af egenskaber. Ved at gå rundt i grænsefladen Beskrivelse af egenskaber.
Overførsel af oplysninger omgå GUI Klik på mappe 1 Antal pixels på skærmen fra mappen 1 * Antal klik Processor bruger tid
Skjulte muligheder UI. Klik på mappe 2 Antal pixels på skærmen, der holdes af mappen 2 * Antal klik Ikke-standard Hurtige Kombinationer
Antal pixels på skærmen, der er besat af knap 2 Guidance Cursor til mappe 1 Antal pixels på skærmen, der holdes af mappen 1 Mange andre ...
Andre uventede UI-kapaciteter Guidance Cursor til mappe 2
Antal pixels på skærmen, der holdes af mappen 2 Tid mellem vejledning og klik
Uendeligt Standard tastaturhændelser.
Antal standard nøglekombinationer Skærmområde besat af GUI

Antal pixels bruges til at vise GUI

Og overvej nu den samme opgave at ændre mappen ved hjælp af kommandolinjen og

:

Lad os analysere på denne måde den grafiske brugergrænseflade, hvor det er muligt at ændre mapperne: Overførsel af information via GUI
Ved at gå rundt i grænsefladen Beskrivelse af egenskaber. Ved at gå rundt i grænsefladen Beskrivelse af egenskaber.
CD. Processor bruger tid Antal mappenavne, som du kan ringe Processor bruger tid

Variabel miljø

I de foregående to tabeller inkluderede jeg ikke data som antallet af støj i signalet. Hvis du sammenligner kompleksiteten af ​​gentagelse af samme sekvens, når du trykker på tasterne (den ene efter den anden) og musens bevægelse (pixel bag pixel), er det åbenlyst, at fejlene i det andet tilfælde er meget mere. I grafiske grænseflader kompenseres dette ved at gøre mindre strenge semantik. Forestil dig, om på "OK" og "Annuller" -knapperne til rådighed for zoneklikene kun var 1 pixelbredde.

Det er muligt at yderligere komplicere analysen, hvis du vurderer ændringen i andelen af ​​fejl hos brugere med fysiske handicap.

  • Så vi betragtede en af ​​de mulige måder at vurdere og sammenligne grænseflader på. Baseret på ovenstående eksempler og deres egen erfaring, lad mig lave flere ekstrapolere:
  • Folk foretrækker grænseflader, der ikke er for strenge, når de modtager information, især hvis grænsefladen ikke er kendt.
  • Ikke for strenge grænseflader bruges oftere forkert.
  • Omfattende grænseflader, der er vært for store mængder information, ser kraftfulde ud, men bruges ofte forkert.
  • Hvis interaktionen bliver kedelig, forsøger folk at overføre oplysninger til grænsefladens bypass.

Når du interagerer, omgå grænsefladen, gennem abstraktionslækage, er fremkomsten af ​​ubehagelige overraskelser ekstremt sandsynligt.

Tørring og begrænsede grænseflader

Jeg vil beskrive flere observationer baseret på analysen fra det foregående afsnit. Men først vil jeg give et par definitioner:

Den lækage grænseflade (lækage interface) er en grænseflade, der ignoreres under eventuelle interaktioner mellem systemet og miljøet.

En begrænset grænseflade (specifik interface) er en grænseflade med et relativt lille antal mulige indgange og udgange.

Et godt eksempel på en begrænset grænseflade -

Piecewise specifikke funktioner.

defineret kun for et lille antal input data.

Hvis du med rimelighed kan evaluere "hullerne" eller "begrænsningsgrænsefladerne, er det fornuftigt at skitsere området, i den ene ende vil være meget begrænsede og inaktive grænseflader og på den anden - ubegrænset og lækker.

Du tilbyder sikkert nogen til at bevæge sig til venstre eller højre på skalaen, men vigtigst af alt, du greb ideen. Du kan endda smadre i to separate skalaer: ifølge graden af ​​huller og rigor. Selvom disse to begreber generelt korrelerer godt.

Den næste korrelation, som jeg vil tilbyde, er afledt af min erfaring. På venstre kant af "fejlen" er skalaen mindre almindelige, og normalt opstår de på grund af fejl

Validation

.

. Ved den højre kant af fejlen sker der ofte op, og ofte ligger deres grund i fejlene, når

verifikation

Asymptotisk kompleksitet af teknisk gæld

Jeg starter med erklæringen:

Hovedparten af ​​den tekniske gæld opstår i projektet eller på grund af den uacceptable bistand til lækage af abstraktioner, eller på grund af de ekstremt utrolige grænseflader, hvilket i høj grad komplicerer prognosen for konsekvenserne.

I begyndelsen indeholder projektet en eller to moduler, og for at studere en god grænsefladeaftale, skal du udføre mængden af ​​arbejde på (1). Hvis din grænseflade er dårlig, vil mængden af ​​teknisk gæld også være lig med (1), så du behøver ikke at bruge for meget tid på at bringe grænsefladekontrakten. Men med en lineær stigning i mængden af ​​moduler kan mængden af ​​intermoduliske bindinger opnå O (n ^ 2). Derfor, med en dårlig grænseflade, hvis hvert modul interagerer med alle andre moduler, vil antallet af appeller til grænsefladen i værste fald være proportional med N ^ 2.

Som det fremgår af graferne, er det oprindeligt gemt på at skabe en velovervejet interface. Men denne sejr er hurtigt tabt på grund af de stigende problemer, der er forbundet med intermodulets interaktion. Mængden af ​​arbejde på grund af dette øges i graden af ​​mængden af ​​moduler, mens den med en god grænseflade vokser lineært. Det værste scenario - når hvert modul kommunikerer med hvert modul, er der flere problemer i processen i Hendeshka, herfra og stængler.

Niveauet af intermodulisk interaktion vokser typisk langsommere end O (n ^ 2), men det er bestemt hurtigere end ca. (n). Der er også en faktor, der skifter begyndelsen af ​​hurtig vækst i fremtiden: Dette er menneskelig hukommelse. Selv når der er 20 moduler i dit projekt, husker du sikkert, at det gør hver af dem. Så af alle kontrakter har du kun brug for de foggy navne på funktioner og esoteriske aftaler. Men så snart projektet bliver ret stort, bliver mange detaljer glemt, eller når nye mennesker kommer til projektet - og den stærke vækst i lønomkostningerne begynder.

  • Hvorfor bruger stadig kommandolinjen?
  • Du vil modtage forskellige svar fra folk til dette spørgsmål, hvoraf ingen synes for mig det vigtigste:
  • Kommandolinjen er fleksibel og giver mange muligheder.

Det forbruger mindre ressourcer.

Dette giver dig mulighed for bedre at forstå, hvordan alt fungerer.

Det vigtigste er, hvorfor vi stadig bruger kommandolinjen, det er

AUTOMATISERING!

Det er næppe muligt at overvurdere fordelene ved at bruge automatiserede processer. Hvis jeg skal køre en klynge til 100 servere, vil jeg ikke oprette forbindelse til hver enkelt af dem individuelt og manuelt installere software, klikke på en bunke af knapper i utallige GUI. Selvom du har brug for at automatisere Clichan-processen i GUI, skal du bruge en anden fil, hvor informationen bliver gemt på, hvor og hvordan du klikker. Noget som en fleksibel fil ... Hold.

Selvom vi kunne implementere automatisering gennem klik og på skærmen, må vi ikke glemme, at denne type interaktion med maskinen er opfundet for folk. Det indebærer brugen af ​​en ikke-streng grænseflade, der ikke kræver høj nøjagtighed. Derfor vil din automatiserede clicker sikkert blive brugt, hvis vinduet pludselig bevæger sig fra sin position, eller systemets skrifttype vil ændre sig. Med GUI'en er for mange variabler forbundet. Og kommandolinjen giver dig mulighed for at handle meget mere præcist, interagerer du gennem en meget streng grænseflade. Derfor kan mange mennesker ikke lide ham, i modsætning til computerprogrammer.

Selvfølgelig er der situationer, hvor den lave nøjagtighed af samspillet mellem GUI er god. For eksempel, når du opretter digitale malerier, behøver du ikke bekymre dig om placering og farve på hver pixel. Det vigtigste er at være

noget

Special til hver pixel. Derfor bliver støj, der overføres ved hånd, der flytter markøren, vigtige oplysninger i slutproduktet.

Valg af det rigtige sprog

Efter sektionen om den asymptotiske kompleksitet af teknisk gæld kan du måske tro, at ethvert projekt skal skrives på et sprog med meget strenge betingelser for grænsefladekontrakter, som Haskell eller Java. Men det er ikke ligefrem, hvad jeg ønskede at formidle. Svaret på det næste spørgsmål kan hjælpe dig med at træffe det rigtige valg.

Hvor sandsynligt at ændre kravene til dit projekt?

I begyndelsen af ​​det nye tilfælde vil svaret helt sikkert være "meget sandsynligt", især hvis der skabes et lille produkt, og selv med tvetydigheden af ​​sine udsigter på markedet. Hvis kravene klart formuleres, da for eksempel i tilfælde af oprettelse af en kompilator eller udvikling af et projekt baseret på internationale standarder, vil svaret helt sikkert være "ikke for sandsynligt."

Hvis du svarede "Meget sandsynligt", skal du bruge et sprog, der giver dig mulighed for at miste mindre tid, når de angiver grænsefladekontrakterne: de vil helt sikkert arbejde imod dig i tilfælde af ændringer i kravene. Men hovedopgaven her er ikke at få den ideelle implementering af kravene, men de ideelle krav, der tillader dig

at begynde

Opret endelig implementering. En undtagelse kan være en situation, hvor din MVP er et stort system med hundredvis af moduler. Hvis mange mennesker er involveret i projektet, er en god grænseflade simpelthen nødvendigt for at de kommer til hinanden.

Hvis du svarede "ikke for sandsynligt", skal du bruge et sprog med meget strenge grænsefladekontrakter. Først skal du arbejde mere, men så vil indførelsen af ​​nye muligheder kræve mindre indsats. Den eneste undtagelse kan være en situation, hvis du skriver noget lille produkt (flere hundrede strenge).

Nogen gange blev brudt ganske få kopier vedrørende, hvad Twitter begyndte at skabe på Ruby på Rails, og så var det grunden til projektets skalering. Senere blev Twitter oversat til Scala. Nogen kan antage, at udviklerne lavede en fejl, og de burde straks vælge Scala. Det tror jeg ikke. I hjertet af Twitter ligger en meget enkel ide, og i betingelserne for et stort antal konkurrenter, de havde brug for at vinde den dominerende stilling på markedet. De skulle vokse så hurtigt som muligt, på trods af udgifter. Udviklingscyklusserne af nye funktioner burde have passeret hurtigst muligt, da det tillader det på kortest mulig tid at forstå, hvad der præcist har brug for brugere, hvilket produkt de ønsker som følge heraf. Vanskelighederne med skalering er et tegn på ikke fiasko, men succes. Twitters syn blev formuleret som et færdigt produkt, og det var kun for at realisere det. Fra udsynets syn på udviklere er det bare en nirvana, alle drømmer om sådan en ting, men få mennesker klarer at arbejde under sådanne forhold: "Relegere denne lort fra bunden på dit yndlingssprog, da det er praktisk for dig, hvis kun I fremtiden var det lettere at arbejde sammen med ham. " Det er meget nemmere at omskrive noget fra bunden, have en svagere implementering før vores øjne end at forsøge at tilføje et produktudseende, hvilket gør det muligt for virksomheden at tage afsted. Desværre går de fleste markedsdeltagere kun ved at undgå "unødvendige" omkostninger til at skabe fra bunden og bruge meget styrke og tid på at skalere, at det oprindeligt var umuligt at skalere.

Hvorfor er så populær Python?

I afsnittet om hullerne og strenge grænsefladerne talte jeg om metoden til klassificering af grænseflader afhængigt af deres tendens til lækager af abstraktioner, såvel som hvor strengt kan være interface definitioner. Og jeg påpegede, at mere "venlige" og "produktive" grænseflader er meget mere tilbøjelige til at lække end den anden del af grænsefladespektret.

Jeg tror, ​​at Pythons popularitet stammer fra, at det er et glimrende indledende sprog, der giver ekstremt enkle grænsefladekontrakter. Af samme grund, med en stigning i projektet på Python, bliver det mere og vanskeligere.

Python er meget populær i det videnskabelige samfund og blandt elskere eksperimenterer med numerisk analyse. Essensen af ​​eksperimentet kræver konstant forbedring i det skabte produkt, og strenge grænseflader sænkes.

Hvorfor skriver Corporate Software normalt på Java / C ++?

I afsnittet om hullerne og strenge grænsefladerne talte jeg om kompromiser forbundet med forskellige typer af grænseflader. Java og C ++ er mere til den strenge del af spektret, i modsætning til Python eller Ruby. Ja, lækager kan have lækager, og der er strengere sprog (den samme Haskell), men Java og C ++ er mere afbalanceret ud fra skalaen af ​​skalerbarhed, venlighed og tekster. Derudover giver disse to sprog dig mulighed for at være fleksibel til at kontrollere ledningerne af grænseflader afhængigt af projektaftalerne. For eksempel gør variabler eller funktioner med privat, offentligt eller beskyttet.

Sådan skærer du hjørnerne

Hvis du vil medbringe noget fra denne artikel, bedes du: Når du har brug for at skære hjørner i projektet, skal du gøre det inde

Salg

og drej omkring B.

  • meget godt
  • Interface. Selvom implementeringen ikke er for god, og dens problemer strømmer ind i andre dele af systemet, så er dette et dårligt interface problem! Så der ikke er nogen misforståelse, lad listen over, hvad jeg mener under grænsefladerne:
  • Prototyper af funktioner.
  • "Interfaces" java.
  • Offentlige klasser metoder.
  • Variabler af offentlige komponenter.
  • Header filer (.h) i C / C ++.
  • Restful API End Points.
  • URL-routing.
  • Offentlige aspekter af "modeller" eller "pakker".

Logisk databasestruktur (DDL).

Og meget mere.

Konklusion.

Som du kan se, er grænsefladekonceptet ekstremt vigtigt og har en stor stor indflydelse på udviklingen af ​​projektet inden for retlig beskyttelse, produktivitet og antallet af filosofiske relationer med andre aspekter af systemstrukturen. Spørg andre programmører, som de tænker på grænseflader, og lyt til alle mulige ting.

Brugergrænsefladen er middel til interaktion mellem mennesker og en computer. Taler med enkle ord er grænsefladen den eksterne del af programmet eller den enhed, som brugeren arbejder på. Ordgrænsefladen - patron med engelsk interface, det vil sige "Border Link".

Oftest, under ordinterfacet indebærer brugergrænsefladen. For eksempel siger de: "Denne online butik har en ubehagelig, forvirrende grænseflade." Det betyder, at butikken er ubelejligt at interagere. For eksempel er det svært at finde de nødvendige varer, det er ikke klart, hvordan man bestiller en ordre, webstedet gemmer ikke de tidligere indtastede data mv.

Eksempler på brug:

Mange brugere vil gerne returnere den gamle grænseflade "Vkontakte", de kan ikke lide den nye.

Programmet har en intuitiv grænseflade - straks klart, hvor du skal presse, og hvad det vil føre til.

Windows-grænsefladen er meget kompliceret: uerfarne brugere er forvirrede i en bunke af indstillinger.

Web Interface er en side på internettet, der gør det muligt for brugeren at interagere med en vis tjeneste eller enhed direkte gennem browseren. For eksempel, ved hjælp af webgrænsefladen, kan du bruge Online Bank: Gå til banksiden, indtast login og adgangskode, og oversæt derefter penge mellem konti, løn for tjenester osv.

Hardware og software interface. Hvad er USB- og API-grænsefladen Ud over brugergrænsefladen er der en softwaregrænseflade (interaktion mellem programmer med hinanden) og hardwareinterface (metoder til interaktion mellem fysiske enheder, "jern"). Når de siger om hardwaregrænsefladen, betyder de som regel forbindelser, gennem hvilke enhederne kan tilsluttes til hinanden. For eksempel betyder "Tilslutning via USB-grænseflade" tilslutningsenheder gennem

Universal Sequential Tire.

beregnet til tilslutning af perifert udstyr. Gennem en USB kan du f.eks. Tilslut et tastatur, mus, kamera eller smartphone til en computer.

Hardware Interface - USB-kabel

Programgrænsefladen er en måde at interagere programmerne på. For eksempel er API (Application Programmering Interface, applikationsprogrammeringsinterface) et sæt kommandoer, der gør det muligt for programmer at automatisk udveksle data uden folks deltagelse. Et API-program sender en anmodning, en anden reagerer på hende.

For eksempel viser nyhedsstedet valutakurser, der ændrer sig i realtid. Dette betyder ikke, at webstededitoren hver gang manuelt ændrer numrene på siden. Nyhedswebstedet selv sender en API-anmodning til en server med vekselbørs og modtager de nødvendige tal derfra.

Typer af brugergrænseflader. Grafisk, tekst og andre

Tekstgrænsefladen er en måde at kommunikere en person med en computer ved hjælp af kommandoprint. For eksempel i MS-DOS-operativsystemet var grænsefladen tekstual - brugeren ringer de nødvendige kommandoer på tastaturet, og maskinen udførte dem.

Ms-dos tekstinterface - kommandolinje

Problemet med tekstinterfacet er, at brugeren skal kende de nødvendige kommandoer, og hver gang manuelt skriver dem uden fejl. Dels fra denne vanskelighed elimineret skallen til MS-DOS - for eksempel Norton Commander.

Norton Commander - Filhåndtering for MS-DOS. Du kan ikke kun skrive kommandoer på tastaturet, men arbejde med filer ved hjælp af tastaturgenveje.

Snart optrådte der grafiske grænseflader, hvor brugeren interagerer med visuelle objekter: knapper, ikoner, billeder på skærmen. Windows-operativsystemet bruger en grafisk grænseflade: Brugeren klikker på ikonerne på ikoner - Piktogrammer, der skildrer filer og programmer.

Windows 3.11 Grafisk interface

Materialegrænsefladen er en måde at interagere med en computer ved hjælp af håndgribelige strukturer. For eksempel er en computermus eller joystick en materialegrænseflade. Flytter musen på bordet, flytter vi samtidigt markørpilen på skærmen.

Materiale interface - Computer Mouse. Foto: Depositebilleder.

Voice Interface er kontrol ved hjælp af talekommandoer. Menneskelig stemme i dag kender selv mobiltelefoner. For eksempel, Siri fra Apple, Googles Voice Assistant, "Alice" fra Yandex

Voice Interface - Apple Siri. Siri er en reduktion fra talefortolknings- og genkendelsesgrænseflade (talegenkendelse og tolkningsinterface). Foto: Depositebilleder.

En instrumentgrænseflade giver dig mulighed for at give kommandoer, der laver gester med din finger, hånd, computermus, speciel controller osv.

Installationsinterface - Nintendo Wii Game Console, hvis controllere reagerer på brugerens bevægelse.

Den taktile grænseflade giver brugeren mulighed for at opleve taktile fornemmelser (skub, vibrationer osv.) Og interagere med computeren med deres hjælp.

Virtual Reality Gloves - Et eksempel på en taktil interface. Foto: NASA.

Den neurale grænseflade giver dig mulighed for at overføre kommandoer med elektroderne linted ind i hjernen. Tovejs neurale grænseflader kan ikke kun tage oplysninger fra hjernen, men også at sende det til hjernen - for eksempel gennem øjets nethinden.

Jens Naumann - Blind, i stand til at "se" med en neural visuel protese. Kameraet fanger billedet og sender den behandlede version i den visuelle bark af hjernen gennem elektroderne.

Kian Rivz i filmen "Matrix" (1999). Heroes nyder neurointerface for at komme ind i den virtuelle virkelighed - matrixen.

Cybeeis - Interface i form af virtuel virkelighed. Ramme fra den fantastiske film "Johnny Mnemonic" (1995)

Velkommen til dig, venner! Ordet "interface" på rygter af ejere af pc'er og telefoner, men ikke alle forstår det. Vi vil fortælle for tekande, hvad er grænsefladen i computeren og smartphone, hvorfor det er nødvendigt, hvad der sker med, hvordan man bruger det korrekt. Se dette ord på webstedet, i beskrivelsen eller i instruktionerne, vil nykommeren forstå, hvad vi taler om og hvad de skal gøre næste gang.

Bølge

Hvad er den grænseflade, som den har brug for

Oversat fra engelsk interface - interaktion. Sådan skriver du på russisk: Interface (nogle gange er infaberne skrevet - det er forkert). Normal definition er en almindelig grænse mellem to funktionelle genstande. For eksempel kommer en mand bag hjulet på sin bil, skifter gearkassehåndtaget - dette er interaktion med maskinens interfacesystem. Gearkasse som leder mellem fører og bil.

  • I computervidenskaben er meningen med ordet dybere brugerinteraktionsværktøjerne med spillet, programmet eller operativsystemet, metoderne til styring af computermaskinens funktion. Takket være grænsefladen vil en person finde ud af ethvert program eller tekstredigerer. Hvis vi har arbejde med Paint Graphics Editor, er det nemt at mestre andre lignende programmer, da de har en lignende struktur.
  • Grundlæggende interfaceopgaver:
  • input og output oplysninger;
  • Management Software;

dataudveksling gennem eksterne luftfartsselskaber;

Kommandoer.

Bagpanelet på pc-systemenheden er også en grænseflade, der giver dig mulighed for at forbinde andre enheder.

Brugeren indeholder en computer og ser ikonerne foran ham: "Min computer", "Etiketter", "Foto" osv. - Alle disse interfaceelementer.

Typer af grænseflader

Grænsefladen kan kort beskrives som clearance: Hvad en person ser foran ham, ved hjælp af en pc eller en telefon. Selvom dette faktisk er en systemstruktur, fordi ved at trykke på knapperne ved at klikke på menupunktet, går brugeren til, hvor den har brug for: Kamera, galleri, kontakter, meddelelser. Dens formål er en effektiv, behagelig brug af en elektronisk enhed eller et websted.

Video.

  • Der er forskellige typer af grænseflader, som vi vil fortælle yderligere.
  • Den mest almindelige:
  • kommandolinje;
  • Grafisk og tekstinterface;
  • efter type ledelse (gesturing, stemme, taktil og neural);
  • program;
  • hardware;
  • hardware-software;
  • bruger;
  • Web;
  • spil;

materiale;

Kommandolinje

i telefoner.

Hvad er grænsefladen enkle ord

Hvis du har brug for at navngive og liste de typer moderne grænseflader, vil disse oplysninger hjælpe med at udarbejde alt korrekt og lave en god præsentation.

Dette er en separat software, der er en del af vores vores og sikrer forholdet mellem brugeren og OS. Takket være kommandoprompten kan du udføre computerkommandoer. Dette er en kommunikation med maskinen på sit sprog.

Af manglerne - Du skal kende kommandoerne, hver gang du ringer dem uden en enkelt fejl. Fordelen er evnen til at indtaste kommandoer uden deltagelse af den grafiske struktur, som giver yderligere muligheder.

Kommandolinjen (Console Interface) starter i sin skal, for eksempel i BIOS. Hovedruten på dens placering: C: \ Windows \ System32 \ cmd.exe. Den sædvanlige yowser behøver ikke at være bevidst, hvor kommandolinjen er placeret, og hvordan den virker, og for fagfolk er det hovedværktøjet, da det hjælper med computeren med virus, vinduer restaurering og i andre tilfælde.

En simpel metode til at finde kommandolinjen: Samtidig tryk på WIN + R-tasterne i CMD-vinduet, der vises.

Command Interface.

Grafisk og tekst.

  • Grafisk (ENG. Grafisk brugergrænseflade, GUI) bruges i alle operationer, i de fleste applikationer. Ofte hedder det WIMP - dette er en forkortelse fra de første bogstaver i WordWow, ikonet, menuen, pegeenheden (manipuleringsenhed).
  • Hovedelementer:
  • menu;

lister;

Piktogrammer (tegninger, ordninger).

På Windows Windows klikker brugeren på ikoner, piktogrammer, der skildrer programmer og filer, en grafisk grænseflade, som giver rigelige muligheder for hver bruger. Du behøver ikke indtaste nogen kommandoer. For praktisk interaktion anvendes en computermus.

Du skal skelne grafik fra den visuelle grænseflade, som repræsenterer systemet som et sæt af visuelle billeder - det kan være et ikon eller indskrift placeret i et bestemt skærmsted. Den visuelle struktur bruger ikke nødvendigvis grafiske mappings. Den visuelle struktur kan være grafisk og tekst.

Tekst bruger, når du indtaster og giver information, et sæt bogstaver / tal, tegn af pseudografisk. Det bruger alle grundlæggende grafiske designelementer: afkrydsningsfelter, knapper faldende lister osv. Forskellige med små krævende tekniske ressourcer, højhastighedsdata. Tekstgrænsefladen er en type bruger, mens kommandolinjen er en del af teksten.

I det enkleste tilfælde bruger tekstinterface en kommandolinje, men mange programmer med interaktive elementer gør et mere venligt, forståeligt design, som nærmer sig bekvemmelighed til grafik.

Nogle programmer understøtter det udviklede vinduesystem, såsom Turbo Vision, D-Flat, Cscape, mange har foranderlige designemner (DOS Navigator), samt evnen til at bruge forskellige interaktive interaktionsartikler (joystick, mus).

Gesturing, stemme, taktil og neural

  • Brugeren styrer computeren og giver kommandoer med forskellige metoder: gester, stemme osv.
  • Derfor er typen af ​​kontrol kendetegnet:
  • Årlig grænseflade. Kontaktelementer er grafiske tabletter, berøringsskærme og andre teknologier, der reagerer på bevægelserne af fingrene;
  • Voice Interface angiver talehåndtering. Eksempler er: Siri fra Apple, Alice fra Yandex;

taktil, når interaktionen er baseret på taktile fornemmelser, hvilket får følsom feedback (vibrationer, push);

Neuronal - transmission af kommandoer gennem elektroder linted ind i hjernen. Oplysninger kan tages fra hjernen og overføres til det, for eksempel gennem øjet retina. I praksis er neurointerface i stand til at lette livet af lammede patienter, hvis hjerne fungerer godt. Neurointerface giver dem mulighed for at udføre konkrete handlinger, læse deres hensigter ved hjælp af elektroder, der er forbundet med hjernen.

Grafisk system interface

Software, hardware, hardware og software

  • Interfacesystemet giver kontakt selv mellem progs og enheder.
  • Der er 3 grupper:
  • Programmeringsinterface (engelsk. Programmeringsinterface) er samspillet mellem programmer indbyrdes. Især API- eller Application Programmering Interface - metoder til udveksling af data mellem computerprogrammer (en sender en anmodning til API, en anden reagerer). Nyhedsportalen viser valutaer. Ikke redaktøren er ansvarlig for dette (han skal manuelt ændre tallene), og API, som webstedet sender en anmodning til valutaveksling, modtager et svar;

Hardwaren er designet til at interagere fysiske enheder med hinanden af ​​slots, stik, gateways. USB (Universal Sequential Dæk) er det mest velkendte eksempel. Gennem den forbinder til pc-telefon, kamera, mus;

Hardware-software er interaktionen mellem noder, elementer under programstyring.

brugergrænseflade

Hvad brugeren kontakter det, han ser foran sig selv, hvor det klikker - dette er brugergrænsefladen. Dette er den eksterne del af enheden eller det program, som brugeren arbejder på.

Ofte, under Word-grænsefladen indebærer bruger (brugergrænseflade). Det sker, at webstedets besøgende siger: "Der er en forvirrende, ubehagelig registrering eller menu." Så, webstedet er ubehageligt at kontakte: Det er svært at finde det rigtige emne, kassen ordren, download dokumentet. Den forståelige struktur er, når en person straks ser, hvor du skal klikke, ved, hvad det vil medføre det. Men med vinduer har mange newbies problemer, fordi designet af denne OS-undersøgelse, uerfarne brugere er forvirret i indstillingerne. I 1C-platformen, der anvendes to forskellige brugergrænseflademekanismer i forskellige 1C-klienter.

Kommandolinje, grafik, tekst, stemme, gesturing, taktil, neural, proceduremæssig - alt dette er inkluderet i brugergrænsefladen. Under dens kontrol indtaster brugeren dataene i pc'en, information på skærmen vises, printeren. Der er endda en grænseflade af regnearket - dette er et element, som en person ser, kører, for eksempel OpenOffice.org Calc-applikationen.

Men der er nogle flere typer brugergrænseflade.

Hardware Interface.

Web, Game.

Web-interface er en webside (et eller et sæt), der repræsenterer en struktur for kontakt med en server eller en enhed via en HTTP-protokol og en webbrowser. For eksempel kan klienten gå til banksiden, betale utility services. Den største fordel - ingen grund til at installere yderligere software, fordi operativsystemet går med browseren. Ingen grund til at blive forvirret med netværksgrænsefladen. Under dette udtryk forstås som en virtuel eller fysisk enhed, som er beregnet til at transmittere data mellem programmer via et computernetværk (for eksempel VLAN).

Den populære måde at oprette en web-grænseflade er brugen af ​​HTML med CSS og JavaScript'a. Også brugt Adobe Flash, Java Applets eller Silverlight.

En anden type er spilgrænsefladen - er forbundet direkte med Gamedizayn, selv om det går ud over dets kompetence. Spilleren og spillet er beboet i forskellige universer, og spilstrukturen er punktet for deres gensidige kontakt. Med det får gameren de nødvendige oplysninger fra spillet, og det tager spillerens handlinger.

Materiale

Materiale eller taktil interface er en anden type bruger. Dette er en kontakt af en person med elektronik med konkrete strukturer. For eksempel flytter en mus, der flytter, som en person samtidigt bevæger pilens pil på skærmen.

Sorter af grænseflader

Interface i telefoner

Den overordnede stil på mobilenhedens grænseflade er karakteriseret som Simp (Screen-Icon-Menu-Pointer). På mobile Windows-platforme er elementerne i den struktur, der besætter hele skærmen. Overgangen mellem vinduerne udføres af grafiske elementer eller trækker med en finger.

  • Funktionerne i designet af Simp er forklaret af OS's specifikationer.
  • Det mest almindelige OS til gadgets:
  • Android;
  • Apple iOS;
  • WindowsMobile;
  • Palm OS;

Symbian OS;

Blackberry OS.

Rusland er populært - Android, Apple iOS, WindowsMobile. Men producenter bruger deres typer af interface systemer og blokke, hovedårsagen er branding. Android til tilpasning betyder, at producenter af virksomhedsudstyr kan foretage ændringer i software, for eksempel inden for funktionalitet og design.

Forskellige systemiske strukturer i mobile enheder påvirker ikke i høj grad erfaringerne fra ejere, fordi de er skabt til at løse universelle opgaver. Forskel i sæt af applikationer.

Grænsefladen til mobilenheden indeholder også hovedtelefonstik, opladning, stemmehjælpere - meget af det, der er baseret på pc'ens arbejde, kun dette justeres for gadgets. Men i smartphones er der mange nye strukturer, for eksempel NFC (NFS) - strukturen af ​​den trådløse kommunikation.

Hvad betyder grænseflade sprog

Det er ikke værd at forvirre det med de sprog, der er installeret, når du skriver tekstmaterialer.

  • Interfacesproget er det, der bruges, når du lægger operationerne i menuen i dialogboksene, fejlvinduer og referencer. Det kan ændres, hvis mindst 1 yderligere en er installeret på hovedsproget.
  • En simpel måde at finde ud af, hvilke sprogvinduer der står på en pc:
  • Åbn "Kontrolpanelet";

Tab "Sprog";

Tildelt hovedsproget, der bruges nu. Det kan ændres eller tilføjes en ny.

fund.

For en person er grænsefladen et grundlag for at arbejde med en pc eller en telefon. Og dette er en måde at interagere mellem programmer og udstyr. Simpliciteten af ​​systemstrukturen afhænger af, om det er nemt at styre enheden. Udviklere kommer op med forskellige design og strukturer, hvilket gør dem mere eller mindre behagelige, intuitive for mennesker. IT-eksperter kan foretage ændringer i nogle strukturer eller bruge dem til at løse alvorlige opgaver, og uerfarne brugere kan købe sig selv enheden med et intuitivt interfacesystem for at lette arbejdet og spare tid.

Grænsefladen sagt ofte, når de betyder samspillet mellem en person og computer eller applikationer. I artiklen vil vi analysere definitionen af ​​grænsefladen, som er for interaktioner, deres typer og funktioner.

  • Hvad er grænsefladen

  • Grænsefladen er en "dirigent" mellem mand og et program, et operativsystem, en teknisk enhed eller en metode til interaktion mellem applikationer indbyrdes. En person giver kommandoer ved hjælp af grænsefladen, enheden analyserer dem og reagerer. De vigtigste opgaver, som den er beregnet til:

  • Indtast og visning af oplysninger (lyd, billede);

  • Forvaltning af individuelle applikationer

Dataudveksling med andre enheder;

Typer af grænseflader

Interaktion med operativsystemet.

Kommandolinje

Grænsefladen indebærer samspillet mellem ikke kun mennesker og teknologi, men også et computerprogram, programprogram, computerenhed. For eksempel, når enheder er tilsluttet til computersystemenheden, som interaktionsmetoden bruger stikket.

Nogle typer interaktion giver dig mulighed for at få mere kontrol over en computer eller smartphone, men kræver yderligere færdigheder. Andre er mere komfortable, men giver mindre muligheder. Hver type har sine egne egenskaber.

Kommandolinjen (Console Interface) starter i sin skal, for eksempel i BIOS. Hovedruten på dens placering: C: \ Windows \ System32 \ cmd.exe. Den sædvanlige yowser behøver ikke at være bevidst, hvor kommandolinjen er placeret, og hvordan den virker, og for fagfolk er det hovedværktøjet, da det hjælper med computeren med virus, vinduer restaurering og i andre tilfælde.

Gennem kommandolinjen kan du udføre det maksimale antal operationer er en direkte måde at kommunikere med operativsystemet på. For at skrive kommandoen skal du indtaste teksten i computeren, og tryk på Enter, computeren begynder at udføre.

Minusmetoden er, at den kun er egnet til uddannede brugere. I kommandolinjen er der ingen ekstra grafiske elementer, det bliver nødt til at mestre sproget for interaktion, og kommandoerne fungerer ikke kan forveksles.

Grafikken forenkler interaktion med computeren, det er meget nemmere at arbejde med det og mere komfortabelt end med teksten. I rollen som grafisk grænseflade er sådanne elementer:

I det enkleste tilfælde bruger tekstinterface en kommandolinje, men mange programmer med interaktive elementer gør et mere venligt, forståeligt design, som nærmer sig bekvemmelighed til grafik.

For eksempel, når du interagerer med Windows bruger ikoner og Windows, er musen forbundet til ENTER. På smartphone er indgangsenheden en berøringsskærm.

Tekstgrænsefladen bruger ikke billederne: Kommandoer gives ved hjælp af tekst, og der findes information i tekstformular.

Gestusinteraktionen giver dig mulighed for at give kommandoer til bevægelserne af fingrene. Den anvendes, når du arbejder med en berøringsskærm af en smartphone. For eksempel gør "UP" gestus pop op-vinduet.

Voice Interface er en stemmehåndtering. Gadgeten genkender og udfører lydkommandoer.

taktil, når interaktionen er baseret på taktile fornemmelser, hvilket får følsom feedback (vibrationer, push);

Tactile indebærer interaktion ved hjælp af at røre ved: vibrationer eller følsomhed over for at trykke på.

Den neurale grænseflade sender kommandoen direkte fra hjernen til computeren, for dette er elektroderne implanteret i hjernen. Det bruges i medicin: så en lammet person kan kommunikere med omverdenen.

Hardwaren er designet til at interagere fysiske enheder med hinanden af ​​slots, stik, gateways. USB (Universal Sequential Dæk) er det mest velkendte eksempel. Gennem den forbinder til pc-telefon, kamera, mus;

Program interaktion med hinanden giver en software interface. Programmer sender anmodninger til hinanden og modtager svar. For eksempel for konstant at vise relevant vejr i en widget eller på en computer, sender et program konstant en anmodning til en anden, og det giver friske data.

Hardwaren er beregnet til tilrettelæggelse af kommunikation mellem fysiske enheder via stik og slots. Og når computeren læser oplysninger fra en harddisk - dette er et fælles arbejde i programmet og den fysiske enhed, det vil sige hardware og software interface.

Alt, som den sædvanlige bruger interagerer, når du indeholder en computer, går ind i hjemmesiden eller i applikationen, alt hvad en person ser på skærmen, er en brugergrænseflade.

Web, Game Site

Den populære måde at oprette en web-grænseflade er brugen af ​​HTML med CSS og JavaScript'a. Også brugt Adobe Flash, Java Applets eller Silverlight.

Webgrænsefladen giver dig mulighed for at arbejde gennem browseren. Dette er samspillet mellem programmer på internettet. For eksempel kan du gå til butikens hjemmeside og betale købene. Browseren i dette tilfælde vil være en webgrænseflade, takket være, hvilke sider der interagerer.

Materiale

Spillet er, hvordan brugeren kan interagere med det spil, som kommandoer kan give, i hvilken form spilletinformationen præsenteres, og hvordan spillet vil reagere på handlinger.

Hvad skal der være grænsefladen

Dette er en taktil kontakt med gadgets. Det omfatter rørende berøringsskærm, handlinger med en mus eller joystick.

Logisk databasestruktur (DDL).

Smartphones bruger en berøringsskærm, der indebærer gesturing og taktile grænseflader. Brugeren berører elementerne, operativsystemet eller programmet modtager kommandoer fra det og udfører dem.

Добавить комментарий