was ist aus sicht der benutzerfreundlichkeit mit der syntax im c-stil falsch?
<p>vorläufer: dies ist eine frage zu ux, nicht zur technischen implementierung.</p><p>kontext. ich möchte eine kleine sprache mit einer textsyntax entwerfen. es wird von business analysten verwendet, um systemanforderungen zu definieren - also technisch bewusst, aber nicht tiefgreifend.</p><p>vor dem hintergrund der programmierung bin ich seit so vielen jahren in die c-syntax vertieft, dass ich sie nicht objektiv betrachten kann. im vergleich zu dem heute in anderen kontexten (html, xml) vorherrschenden sgml-stil betrachte ich den c-stil als modell der klarheit. ich habe jedoch verschiedene kommentare an verschiedenen stellen gesehen, die auf mängel hinweisen. ich weiß, dass es praktische probleme geben kann (z. b. determinismus beim parsen), aber das interessiert mich hier nicht.</p><p>insbesondere möchte ich alle usability-mängel des c-stils verstehen. mit "c-stil" meine ich die durch geschweifte klammern getrennten blöcke, parameter in klammern usw. der c-sprache.</p><p>vorschläge/verweise auf artikel/artikel, die probleme und (vorzugsweise) alternative lösungen beschreiben, sind sehr willkommen.</p><p>vielen dank.</p>
<p>was sie erstellen möchten, ist eine <a href="http://en.wikipedia.org/wiki/domain-specific\_language">domänenspezifische sprache</a> . das grundprinzip dieser art von (programmier-) sprache lautet: halten sie die syntax so einfach wie möglich, während sich einfach auf "vom menschen lesbar" bezieht, indem sie alle nicht benötigten funktionen entfernen.</p><h2>schwierigkeiten der c-syntax</h2><p>was macht c-syntax schwer zu schreiben:</p><ul> <li>fehlendes nachlaufen; ich habe viele anfänger gesehen, die auf diesem fluch waren.</li> <li>fehlend} oder).</li> <li>das konzept der zeiger <em> (sie werden diesen wahrscheinlich nicht brauchen) </em></li> <li>variable bereiche</li> <li>copy-by-value vs. referenzen</li> </ul><p>wenn sie eine kleine teilmenge der sprachfunktionen verwenden, ist der code sowohl leichter zu lesen als auch zu schreiben (sofern er konsistent ist).</p><h2>beispiel</h2><p>angenommen, der code muss ausdrücken, dass prozess a von prozess b abhängig ist.</p><pre><code>process a = "cook something"; process b = "go shopping."; depends\_on(a, b); </code></pre><p>oder:</p><pre><code>cook something &lt;- go shopping </code></pre><p>im zweiten beispiel muss der "codierer" nicht einmal das konzept der parameter kennen!</p><h2>technische komplexität beeinflusst die benutzerfreundlichkeit</h2><p>was am ende mindestens genauso wichtig sein kann: eine anständige kompilierungs-/debugging-umgebung, fehlermeldungen, die zur lösung des eigentlichen problems beitragen usw. aufgrund der technischen schwierigkeiten beim parsen von c gibt der compiler häufig nur schwache fehler aus im zusammenhang mit der wahren ursache. auch hier hilft eine einfache syntax.</p>
<p>c hat den vorteil, dass es eine relativ <strong> <em> kleine sprache</em> </strong> ist, was es <strong> macht ) <em> einfach einen c-compiler zu implementieren</em> </strong> (während ein c++ - compiler ein monster zum schreiben ist), und macht es <strong> = <em> leichter die sprache zu lernen</em> </strong>. siehe auch <a href="https://www.tiobe.com/tiobe-index/">tiobe-index</a> , wonach c etwas vor c++ liegt.</p><p>in (imo) abnehmender reihenfolge der rechtfertigung wird c immer noch häufig verwendet</p><ul> <li> <p>eingebettetes zeug<br> es ist viel einfacher, einen c-compiler auf eine kleine plattform zu portieren, als einen c++ - compiler zu portieren. außerdem behaupten c-befürworter, dass c++ "hinter ihrem rücken zu viel tut". allerdings imo das ist fud.</p> </li> <li> <p>systemprogrammierung<br> auch dies ist normalerweise auf die behauptung zurückzuführen, dass es einfacher ist, "zu wissen, was der compiler tut". viele eingebettete programme würden jedoch beispielsweise von vorlagen und anderen c++ - schlüsselfunktionen profitieren.</p> </li> <li> <p>quelloffene software<br> das ist jedoch meistens ein einstellungsproblem: oss hat c immer c++ vorgezogen (während es in großen teilen der branche das gegenteil ist). torvalds irrationaler hass könnte tatsächlich der wichtigste grund dafür sein <em> unter linux</em>.</p> </li> </ul> <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> Ein reg-ex wird viel schneller sein als html agility pack. 

 Aber Sie sollten bedenken, dass HTML nicht immer gut geformt sein muss. Die Suche nach den richtigen Daten, die Sie nur mit reg-ex verwenden möchten, kann fehlschlagen. Browser sind sehr fehlerverzeihend. 

 Agility Pack ist ein großartiges Werkzeug. Es bietet eine Menge Funktionen für den Speicher, den es verbraucht. <p>dies kann eine paginierung sein oder auch nicht, aber hier ist, wie ich paginierung in meiner web-app mache:</p><pre><code>|&lt; first, &lt;&lt; previous, page [5] of 12, next &gt;&gt;, last &gt;| </code></pre><p>die äußeren vier optionen sind links, während die <code>page [5] of 12</code> ist ein formular mit dem [5] als eingabefeld. für benutzer mit aktiviertem javascript verstecke ich die schaltfläche "senden" und sende das formular beim ereignis "unfokus" oder drücke den tastendruck. der benutzer hat die option, wie viele zeilen er anzeigen möchte, die er aus einem dropdown-menü auswählen kann: 10, 20, 50, 100, alle. zusätzlich zur paginierung biete ich auch das sortieren und filtern der ergebnisse an, obwohl dies möglicherweise nicht in jeder situation sinnvoll ist.</p><p><strong>bearbeiten</strong>:</p><p>hier ist ein ausschnitt aus einem modell unserer web-app, um ihnen eine bessere vorstellung zu geben. in dieser version wurden die wörter in den schaltflächen weggelassen, werden jedoch nach einer leichten verzögerung als tooltip beim hover angezeigt. möglicherweise stellen sie jedoch fest, dass das beibehalten der wörter zu einer höheren benutzerfreundlichkeit führt.</p><p><img src="https://i.stack.imgur.com/vzbu0.png" alt="virtuosi media&#39;s pagination example"></p><p>ein paar andere dinge, auf die sie hinweisen sollten:</p><ul> <li>die schaltflächen "erste" und "vorherige" wurden deaktiviert, da es sich um die erste seite handelt.</li> <li>das blau zeigt aktive schaltflächen an (ich muss dieses spezielle thema durch eine farbprüfung ausführen, um sicherzustellen, dass farbenblinde benutzer einen unterschied feststellen können).</li> <li>die tasten bleiben immer erhalten, auch wenn sie deaktiviert sind. dies gibt der schnittstelle konsistenz.</li> <li>aufgrund der skalierung habe ich ein eingabefeld anstelle eines dropdown-auswahlfelds ausgewählt. wenn sie 3000 seiten haben, möchten sie nicht nach unten scrollen, um eine seite zu finden</li> <li>die paginierung ist in einer singulären visuellen komponente gruppiert, um ähnlichkeit im zweck anzuzeigen.</li> </ul> Hallo
 
*>>Sollen diese Seiten nicht mehr als canonical gekennzeichnet werden?*
Wenn sie unterschiedlich sind, dann darf Canonical nicht verwendet werden.
 
*>>Werden immer beide Seiten indiziert und im jeweiligen Land die entsprechende in der Suchmaschine gefunden?*
Nein, dafür ist Hreflang notwendig, Tutorial siehe hier: <https://support.google.com/webmasters/answer/189077?hl=de>
 
*>>Welche Vor- und Nachteile können wann auftreten?*
Vorteile liegen darin das alles Richtlinienkonform umgesetzt wird. Nachteile entstehen bei falscher Umsetzung, denn dann wird sich Google sehr wahrscheinlich nicht 100%  an die Ländervarianten halten.
 
lg
PeVy [bild] nadja:

was macht dieses „es“ hier?

meine antwort: es (nämlich das „es“) macht hier ein stilistisches no-go. wenn ein attributiv gebrauchtes part. i ein objekt führt, und dieses dann durch ein anaphorisches „es“ stellvertreten wird - ganz übel.

jedenfalls kompliment für dich, dass du e… <p>ja, es ist einfach eine wiederkehrende phrase im titel mehrerer artikel, beginnend mit einem paar in den 70er jahren, in dem sussman und steele die verwendung der lambda-rechnung für die programmierung anhand eines minimalistischen lisp-dialekts mit dem namen " <a href="http://en.wikipedia.org/wiki/scheme\_%28programming\_language%29">schema" demonstrieren</a> "sie haben für diesen zweck entwickelt. sie finden <a href="http://library.readscheme.org/page1.html">die papiere selbst hier</a> ; sie sind interessant und überraschend relevant.</p><p>ich bin mir nicht sicher, ob dies jemals explizit angegeben wird, aber es ist klar (aus dem kontext, nachdem ich die artikel gelesen habe und den allgemeinen hintergrund und die forschungsinteressen der autoren kenne), dass der satz einfach ein eingängiger slogan für ihre behauptung ist, dass lambda-abstraktionen sind als rechnerisches grundelement nicht nur universell im formalen sinne (in der lage zu sein, ein programm auf irgendeine weise zu codieren, wie umständlich es auch sein mag), sondern universell in einem <em> praktischen </em> spüren, dass jedes in anderen sprachen vorhandene konstrukt, auch solche, die von grund auf eingebrannt wurden, in einer sprache auf lambda-basis auf eine weise implementiert werden kann, die sowohl effektiv als auch natürlich zu verwenden ist.</p><p>der wiederholte satz führt zu der offensichtlichen verallgemeinerten form "für alle x ist lambda das ultimative x", was der sinn ist, den ich allgemein als "lambda the ultimate" als blognamen verstanden habe, wobei ich feststelle, dass sich ltu mit der programmiersprache befasst design und theorie. ironischerweise wäre ltu wahrscheinlich auch einer der besten orte, um jemanden zu finden, der ihnen etwas erzählen könnte, für das lambda <em> nicht </em> die ultimative implementierung ist. :]</p><p>beachten sie auch, dass sussman einer der autoren von <a href="http://mitpress.mit.edu/sicp/"> sicp </a> ist, einem sehr einflussreichen lehrbuch, das auch die schemasprache verwendet und viel zeit damit verbringt, lambda-abstraktionen als einzuführen ein konzept.</p> was soll man denn da verständlich erklären? es gibt da einzelne standards mit 200 oder gar mehr seiten...wie willst du dir da einen schnellüberblick verschaffen? 

die standards wurden von einem privaten standardsetter (dem iasb) festgesetzt, mit der groben zielsetzung im hinterkopf, die rechnungslegung möglichst transparent und die bewertung möglichst am zeitwert/marktwert ("fair value") orientiert zu gestalten. der hintergedanke war, dem kapitalanleger (den an diesen richten sich die standards vornehmlich) durch diese art der bewertung (die sich stark an den amerikanischen us-gaaps orientiert) ein möglichst umfassendes und zeitnahes abbild des unternehmes zu verschaffen. 

der kerngedanke dahinter ist ja gar nicht verkehrt, nur wird dem ersteller eines abschlusses nach ifrs ein sehr hoher zeitlicher (und auch monetärer) aufwand abverlangt, da die bereitstellung der vielzahl der geforderten informationen (insbesondere in den notes) sich schon sehr aufwendig gestalten kann....

für weitere lektüre: schau einfach mal bei wikipedia unter den ifrs nach Zu viele Zeitsprünge


Zu wenig Handlungsstränge


Zu viel Umgangssprache


Schlampiger Umgang mit der Sprache


Total "unbehaltbare" Namen


Kein gescheiter Spannungsaufbau


Schludriger Schluß


Noch mehr? <p>erwägen sie die verwendung eines <strong> mehrfachauswahl-designs mit token </strong>. die filter-as-you-type-funktion ist nett, aber nicht unbedingt erforderlich. diese funktionieren gut, wenn im allgemeinen anwendungsfall entweder einer oder nur wenige ausgewählt werden. die benutzerfreundlichkeit nimmt jedoch schnell ab, wenn sie viele auswählen müssen, da der benutzer das menü für jedes element erneut aufrufen muss.</p><p><img src="https://i.stack.imgur.com/fth7o.png" alt="multi-select with tokens, via harvesthq.github.com/chosen"></p><ul> <li> <a href="http://harvesthq.github.com/chosen/">http://harvesthq.github.com/chosen/</a> </li> <li> <a href="http://designingwebinterfaces.com/the-multi-select-solution">http://designingwebinterfaces.com/the-multi-select-solution</a> </li> <li> <a href="http://loopj.com/jquery-tokeninput/">http://loopj.com/jquery-tokeninput/</a> </li> </ul><p>sie haben die tokenisierte mehrfacheingabemethode bereits in ihren e-mail-clients gesehen. <img src="https://i.stack.imgur.com/h1aid.png" alt="multi-select-tokens in email"></p><p>wenn häufig mehrere ausgewählt werden, können sie ein kontrollkästchenmenü <strong> </strong> in betracht ziehen. der unterschied besteht darin, dass das dropdown-menü über alle klicks hinweg dauerhaft bleibt (und die mehrfachauswahl visuell kommuniziert). daher kann der benutzer mit klick-klick-klick schnell mehrere elemente auswählen. für unsere web-app möchten wir dieses design durch hinzufügen der token-funktionalität verbessern.</p><p><img src="https://i.stack.imgur.com/zqizh.png" alt="checkbox menu, via realestate.com.au"></p><ul> <li> <a href="http://www.realestate.com.au/">http://www.realestate.com.au/</a> </li> <li> <a href="http://blogfreakz.com/jquery/jquery-dropdown-check-list/">http://blogfreakz.com/jquery/jquery-dropdown-check-list/</a> </li> </ul>