Schlagwort: Theorie

Wissenschaft im Diskurs 👍 👎

Regelmäßig erscheinen nicht nur in Fachmagazinen Artikel zu wissenschaftlichen Erkenntnissen, sondern auch in klassischen Nachrichtenmagazinen. Hierbei beobachte ich leider sehr häufig eine große Unsicherheit bis hin zu mehr als fragwürdigen Äußerungen in den zugehörigen Diskussionsbereichen. Daher dachte ich mir, es kann möglicherweise nicht schaden, hier ein paar Aspekte der Natur- und Strukturwissenschaften herauszustellen.

Naturwissenschaften

Naturwissenschaften beschäftigen sich – naheliegenderweise – mit den verschiedenen Erscheinungen der Natur.

Anspruch

Ein verbreiteter Irrtum ist es, Naturwissenschaften als etwas zu sehen, woran man glauben müsste. Im Gegenteil ist es richtig und wichtig, entsprechende Erkenntnisse kritisch zu hinterfragen und zu überprüfen. Naturwissenschaften haben außerdem explizit nicht den Anspruch, Antworten auf den Sinn des Lebens oder ähnliche philosophische Fragestellungen liefern zu können oder auch nur zu wollen.

Naturwissenschaften beobachten natürliche Ereignisse, um auf deren Basis möglichst präzise Beschreibungen und im Idealfall schließlich Vorhersagen erarbeiten zu können. Diese Vorhersagen können sich durchaus auch als unzutreffend erweisen, was für die wissenschaftliche Arbeit jedoch keine "Niederlage" darstellt. Auch daraus lässt sich nämlich neue Erkenntnis ziehen und sei es auch nur, dass man etwas doch noch nicht verstanden hat.

Es gilt im Hinterkopf zu behalten, dass es sich immer um beschreibende Modelle dessen handelt, was Gegenstand der Untersuchung ist. Das heißt nicht zwangsläufig, dass etwas nun "so ist" – Modelle können fortlaufend durch neue Erkenntnisse verbessert oder gar verworfen werden. Im Übrigen können im naturwissenschaftlichen Bereich auch (hinreichend genaue) Näherungslösungen erwünscht und akzeptabel sein.

Finanzen

Naturwissenschaftliche Forschung kostet Geld. Je nach konkretem Vorhaben kann es sich hierbei um Kleinstbeträge mit Küchenutensilien bis hin zu Vorhaben handeln, die außerhalb unserer Erde stattfinden und mehrere Milliarden Euro kosten.

Das Geld wird jedoch nicht, wie oft behauptet, "ins All geschossen" – entsprechend hochwertiges Material kann zwar teuer sein, aber das ist auch schon alles, was dort verbleiben wird. Selbst Weltraumagenturen neigen also keineswegs dazu, Geldscheine in Raketen auf andere Himmelskörper zu befördern. Vielmehr dienen diese Ausgaben insbesondere dazu, die mitunter zahlreichen Mitarbeiter zu bezahlen – von der Förderung der Rohstoffe, über Berater bis hin zu Astronauten. Es ist im Übrigen eine verbreitete Fehlannahme, durch hier "eingesparte" Gelder plötzlich den Welthunger stillen zu können – derartige Probleme sind oftmals ökologischer, sozialer und politischer Art und höchstens am Rande eine Frage des Geldes.

Damit ist leider tatsächlich nicht ausgeschlossen, dass es auch im wissenschaftlichen Betrieb, wie überall sonst auch, zu unnötigen Ausgaben kommen kann. Das finde ich selbstverständlich auch nicht toll und – sofern nicht selbst provoziert – die beteiligten Forscher sicher ebenfalls nicht. Nicht zuletzt möchte ich auch an dieser Stelle noch einmal darauf hinweisen, dass man auch aus augenscheinlichen Fehlschlägen Erkenntnisse ziehen kann.

Grundlagenforschung

Im Bereich der Naturwissenschaften findet, insbesondere an Universitäten, Grundlagenforschung statt. Diese dient als Basis für eventuell mögliche Anwendungen und weitergehende Überlegungen. Diese Grundlagenforschung kann sehr theoretisch sein und mit exotischen Materialien arbeiten; die Nützlichkeit für den Alltag erschließt sich nicht unbedingt sofort. Es handelt sich vordergründig um eine Maßnahme des weiteren Erkenntnisgewinns.

Man weiß mitunter nicht immer bereits im Voraus, wozu eine Überlegung später dienen könnte – und ob überhaupt. Es liegt jedoch in der Natur des Menschen, die Grenzen des Möglichen durch intellektuelle Auseinandersetzung mit dem Gegebenen zu verschieben. Zur Beruhigung sei darauf hingewiesen, dass selbst aus historischer Sicht sehr kuriose Ansätze in heutige Alltagsprodukte einfließen konnten (Stichworte: Quantenmechanik, Zahlentheorie). Ihr solltet also nicht sofort an Verschwendung denken, wenn ihr nicht sofort eine Broschüre mit möglichen Produkten zu einer wissenschaftlichen Theorie finden könnt.

Vertreter

Typische Vertreter der Naturwissenschaften sind die Biologie, Chemie und Physik.

Strukturwissenschaften

Strukturwissenschaften untersuchen abstrakte Objekte auf ihre Eigenschaften und dienen der Modellbildung.

Anspruch

Im Gegensatz zur empirischen Vorgehensweise der Naturwissenschaften basieren Strukturwissenschaften auf einem deduktiven Ansatz, bei welchem – ausgehend von gewissen Grundannahmen – logische Schlüsse gezogen werden. Dies ermöglicht – bei gültigen Schlüssen – tatsächlich absolute, unwiderlegbare Aussagen, die jedoch auch nur soweit gültig sind, wie es die Theorie selbst erlaubt. Wesentliches Element ist die Abstraktion.

Modellbildung

Als sehr einfaches Beispiel sei folgende Überlegung eingebracht: Dass 1 + 1 = 2 ist, dürften die meisten Menschen ohne weiteres Zögern akzeptieren, da es ihnen so beigebracht wurde. Dies ist für die "gewöhnliche" Addition auf natürlichen Zahlen auch völlig richtig und wird sich garantiert niemals ändern, denn im Gegensatz zu natürlichen Phänomenen können hier keine neuen Erkenntnisse auftauchen, die die Aussage widerlegen könnten – vielmehr ist die Theorie absichtlich so konstruiert, dass die Aussage stimmt.

Genauso kann es jedoch auch sinnvoll sein, davon abzuweichen und ein anderes Modell als Grundlage zu verwenden. Sofern wir im Dualsystem rechnen, ergibt sich nämlich die Gleichung 1 + 1 = 10 und in noch spezielleren Algebren ergibt sich gar 1 + 1 = 0 (mod 2). Und tatsächlich ist jede dieser drei Gleichungen in ihrem jeweiligen Kontext richtig und keine der jeweils anderen wurde durch eine dieser Gleichungen widerlegt. Es wäre schlicht umständlich für an das Dezimalsystem gewöhnte Menschen, wenn wir unsere Gegenstände im Dualsystem zählen würden (obwohl aus mathematischer Sicht nichts dagegen spräche).

Ein Computer arbeitet jedoch anders, sodass ein anderes Modell als Grundlage verwendet werden kann – und das funktioniert im Rahmen der Digitaltechnik äußerst gut, wie man nicht zuletzt daran sehen kann, dass ihr hier gerade einen Blog über das Internet lesen könnt, in welchem durchaus sehr spezielle Mathematik zum Einsatz kommen kann, beispielsweise bei Komprimierungen und Verschlüsselungen. Es geht also auch hier letztendlich nicht um "die Wahrheit", sondern vielmehr um passendes Werkzeug zur Lösung einer Problemstellung.

Verbindung

Im Kontext unserer bisherigen Überlegungen sind nun auch die Verbindungen zu den anderen Wissenschaften, beispielsweise der Physik, zu betrachten. Mitunter abenteuerlich anmutende Beschreibungen natürlicher Phänomene bedeuten nun eben genau nicht, dass sich die Natur so verhalten muss, sondern die Natur verhält sich auch völlig ohne unsere Modelle genau so, wie sie es eben macht.

Unsere Modelle dienen lediglich der möglichst präzisen Beschreibung dessen, was wir beobachten können, um davon ausgehend beispielsweise Vorhersagen treffen zu können. Diese Modelle müssen möglicherweise angepasst werden, dies macht jedoch explizit nicht die dahinterliegende Mathematik falsch, sondern bedeutet lediglich, dass das falsche "Werkzeug" gewählt wurde – oder aber Fehler in der Anwendung gemacht wurden. Es sei entsprechend nochmals darauf hingewiesen, dass im Universum also keine Matrizen umherschwirren und auch physikalische Bezeichnungen sollte man nicht immer wörtlich nehmen (Quarks sind also nicht etwa bunt im üblichen Sinne, von "Farben" spricht man hier lediglich im Sinne einer Kategorisierung und "dunkle Materie" meint schlicht einen zumindest bisher nicht sichtbaren Einfluss) – dennoch können sie hilfreich sein, bestimmte Phänomene zu beschreiben.

Die Frage nach dem finalen "Warum?" kann schließlich niemand beantworten; Religionen deklarieren hier lediglich willkürlich und ohne jegliche Evidenz ihre vorgebliche Überzeugung zur "Erklärung" und schließen weitere Nachfragen aus. Konzeptionell ähnlich gehen Pseudo-Wissenschaften und Verschwörungstheorien vor, welche ohne jegliche Anhaltspunkte (bzw. sogar vielen gegensätzlichen Aspekten) einer Überzeugung anhängen. Bloße Gefühle, Mehrheiten, Meinungen und Sichtweisen genügen dem wissenschaftlichen Anspruch explizit nicht.

Vertreter

Typische Vertreter der Strukturwissenschaften sind die Informatik, Logik und Mathematik.


Bitte beachtet, dass dieser sehr vereinfachte Überblick nicht die ganze Breite der jeweiligen Begriffe und Fachgebiete klären kann, sondern vielmehr dem interessierten Laien eine Möglichkeit der Einordnung geben soll. Sofern ich mit diesem Beitrag dazu anregen konnte, diese Arten der Wissenschaft besser differenzieren zu können und nicht gar nur als "akademische Selbstbeschäftigung" zu betrachten, würde ich mich jedoch sehr freuen.

Weiterführende Informationen und Verweise

Forschungseinrichtungen in Deutschland
Wissenschaftlich orientierte Blogs und Podcasts
Magazine

Die Spektrum der Wissenschaft Verlagsgesellschaft veröffentlicht mehrere (natur-)wissenschaftliche Magazine, darunter insbesondere auch das bekannte Spektrum der Wissenschaft. Die Ausgaben erscheinen monatlich und bieten oftmals auch (ggf. auf Deutsch übersetzte) Artikel direkt beteiligter Forscher.

Quartal mit C# ermitteln 👍 👎

Leider bietet die DateTime-Struktur standardmäßig keine eingebaute Funktionalität zur Ermittlung des Quartals einer Instanz. Wir werden diese daher als praktische Erweiterungsmethode ergänzen:
Erweiterungsmethode implementieren
0102030405
public static class DateTimeExtensions {    public static int GetQuarter(this DateTime dateTime) {        return ((dateTime.Month + 2) / 3);    }}
Durch die vorherige Addition von 2 wird die (ganzzahlige) Teilbarkeit bei richtigem Ergebnis sichergestellt. Indem die Teilung variabel gestaltet wird, beispielsweise mit Hilfe eines zu übergebenden Aufzählungswertes mit passenden ganzzahligen Werten, können auch andere Jahresteile (z. B. Halbjahre) sehr einfach ermittelt werden:
Erweiterungsmethode implementieren (erweitert)
010203040506070809101112
public static class DateTimeExtensions {    public static int GetYearDivisionPart(this DateTime dateTime, YearDivision yearDivision) {        int monthsPerDivision = (int) yearDivision;
return ((dateTime.Month + (monthsPerDivision – 1)) / monthsPerDivision); }
public enum YearDivision { Half = 6, Quarter = (Half / 2) }}
Die Verwendung gestaltet sich in beiden Fällen naheliegend einfach:
Erweiterungsmethode verwenden
0102030405
DateTime birthday = new DateTime(1988, 1, 29);
int quarter = birthday.GetQuarter(); // 1 /* bzw. */quarter = birthday.GetYearDivisionPart(YearDivision.Quarter); // 1

Byte-Angaben mit C# formatieren 👍 👎

Mit gewisser Regelmäßigkeit kommt man als Softwareentwickler in die Verlegenheit, Dateigrößen statt in der Form 10110 Byte in der "üblichen" Schreibweise mit größeren Einheiten (in diesem Fall 9.87 KiB) darzustellen.

Zwar gäbe es hier wieder einmal die Möglichkeit per DllImport und beispielsweise StrFormatByteSizeW zu arbeiten, jedoch möchten wir in diesem Fall die Implementierung selbst vornehmen, um die Basis (Stichwort: Binärpräfixe) konsistent bestimmen zu können. Ich stelle dazu zwei mögliche Implementierungen vor:
Hilfsklasse mit Methode zur Formatierung
0102030405060708091011121314151617
public static class Helper {    private static readonly IReadOnlyList<string> unitList = new string[] {        "Byte", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB"    };

public static string FormatBytes(double bytes) { int index = 0;
while(bytes >= 1024 && index < Helper.unitList.Count) { bytes /= 1024; index++; }
return $"{Math.Round(bytes, 2).ToString("N2")} {Helper.unitList[index]}"; }}
Alternativ lässt sich das Problem jedoch auch ohne Schleife – und daher mathematisch etwas eleganter – durch ein ähnliches Vorgehen wie bei der Ermittlung der Anzahl der Ziffern einer Zahl mittels Logarithmen lösen:
Alternativer Lösungsansatz
010203040506
public static string FormatBytes(double bytes) {    int index = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));    bytes /= Math.Pow(1024, index);
return $"{Math.Round(bytes, 2).ToString("N2")} {Helper.unitList[index]}";}
Die Verwendung gestaltet sich nun in jedem Fall recht einfach:
Formatierung verwenden
010203
string formattedBytes = Helper.FormatBytes(1024);         // 1,00 KiBformattedBytes = Helper.FormatBytes(1024 * 1024);         // 1,00 MiBformattedBytes = Helper.FormatBytes(1024 * 1024 * 1024);  // 1,00 GiB
Abschließend möchte ich auch noch kurz eine beispielhafte Implementierung zur Verwendung im Rahmen einer benutzerdefinierten Formatierung per String.Format skizzieren:
Implementierung der benutzerdefinierten Formatierung
010203040506070809
public class FileSizeFormatProvider : ICustomFormatter, IFormatProvider {    public string Format(string format, object arg, IFormatProvider formatProvider) {        return Helper.FormatBytes(Convert.ToDouble(arg));    }
public object GetFormat(Type formatType) { return this; }}
Bitte beachtet jedoch, dass diese Implementierung noch nicht vollständig ist. Weiterführende Informationen zur korrekten Implementierung finden sich im MSDN per ICustomFormatter und IFormatProvider. Verwendung:
Verwendung der benutzerdefinierten Formatierung verwenden
01
formattedBytes = String.Format(new FileSizeFormatProvider(), "{0}", (1024 * 1024));  // 1,00 MiB
Ich werde eine vollständige Implementierung vermutlich in einem späteren Beitrag nachreichen.

Wissen(schaft)spodcasts 👍 👎

In früheren Beiträgen hatte ich bereits ein paar Podcast-Empfehlungen ausgesprochen und auf mein Feedreader-Projekt hingewiesen, welches ebenfalls einige Podcasts aus verschiedenen Themenbereichen bereithält.

Mit diesem Beitrag möchte ich darüber hinaus gerne auf Wissenschaftspodcasts hinweisen. Diese Seite wurde von einigen Podcastern aus dem Bereich der Wissenschafts- und Wissensvermittlung ins Leben gerufen. Zu den Gründern gehören u. a. auch Nicolas Wöhrl von methodisch inkorrekt und Markus Völter von omega tau – beides Podcasts, die ich schon seit sehr langer Zeit verfolge und auch hier bereits beworben habe.

Die von den genannten und weiteren Personen eröffnete Seite bietet nun eine Sammlung verschiedenster Podcasts aus den Bereichen Wissen und Wissenschaft. Das Themenspektrum ist breit abgedeckt und reicht von Archäologie, Geschichte und Technik über Astronomie, Forschung im Allgemeinen und Speziellen bis hin zu Mathematik und Naturwissenschaften. Ich gehe also davon aus, dass für (fast) alle meiner – sicherlich hauptsächlich technisch interessierten – Besucher etwas dabei sein dürfte. Ihr könnt darüber hinaus auch neue Vorschläge einreichen.

Da mir die Vermittlung von Wissen und das Gespräch über wissenschaftliche Erkenntnisse persönlich äußerst wichtige Angelegenheiten sind, würde ich mich sehr freuen, wenn ihr etwas Passendes findet und die Seite(n) weiterempfehlt. Der Vollständigkeit wegen möchte ich abschließend noch kurz darauf hinweisen, dass ich mit den genannten Seiten in keiner weiteren Verbindung außer als Zuhörer einiger Podcasts stehe.

Schaltjahr ermitteln 👍 👎

Viele Beispiele ermitteln ein Schaltjahr über eine Prüfung darauf, ob das fragliche Jahr durch vier teilbar ist. Diese einfache Prüfung, die bereits im julianischen Kalender Anwendung findet, ist jedoch nur eine von drei Regeln des gregorianischen Kalenders. Für eine vollständige Prüfung müssen folgende drei Bedingungen überprüft werden:
  • Ist das Jahr durch 4 teilbar, ist es potentiell ein Schaltjahr. (2016 ist ein Schaltjahr)
  • Ist das Jahr durch 100 teilbar, ist es grundsätzlich kein Schaltjahr. (2100 ist kein Schaltjahr)
  • Ist das Jahr durch 400 teilbar, ist es generell ein Schaltjahr. (2000 ist ein Schaltjahr)
Dies lässt sich in C# nun beispielsweise wie folgt als statische Methode umsetzen:
Schaltjahr-Prüfung implementieren und verwenden
01020304050607
public static bool IsLeapYear(int year) {    return (((year % 2 == 0) && (year % 100 != 0)) || (year % 400 == 0));}
bool isLeapYear = IsLeapYear(2016); // trueisLeapYear = IsLeapYear(2100); // falseisLeapYear = IsLeapYear(2000); // true
Besonders spannend ist diese Methode jedoch nicht, das .NET-Framework bietet mit DateTime.IsLeapYear(…) nämlich bereits eine entsprechende Implementierung an. Es gilt jedoch den Hinweis der Dokumentation zu beachten, dass die Prüfung dabei immer im Rahmen des gregorianischen Kalenders erfolgt, was für manche – beispielsweise historische – Anwendungen unpässlich sein kann. Das Framework bietet im Namensraum System.Globalization jedoch weitere Kalender-Implementierungen an, welche jeweils eine entsprechende Umsetzung der IsLeapYear(…)-Methode zur Verfügung stellen.

Project links

Categories / Archive  |  Übersicht RSS feed

Tags

Search