🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #291664

Re: Sztuka Kodowania w C++ - Nowa Wersja!

#291664
From: Maciek Godek
Date: Thu, 26 Nov 2020 01:35
86 lines
4197 bytes
środa, 25 listopada 2020 o 20:50:32 UTC+1 jawors...@adres.pl napisał(a):
> Wracając do tematu: 
> 
> > https://gitlab.com/energokoder/sztuka-kodowania 
> 
> Takie 2 pyt.: 
> 1. Czy podzielacie opinię osób z 4programmers.net, że przedstawiam zalecenia słabo uargumentowane i mocno podszyte emocjami? 

Nie przeglądałem dogłębnie, ale dla mnie to wygląda bardziej jak cienka zajawkowa broszurka, niż poważny tekst.

Kiedyś napisałem na Quorze taką odpowiedź:

https://www.quora.com/What-are-some-examples-of-bad-code/answer/Panicz-Godek

Prezentuje źle napisany kod (akurat w C++), i pomysły, jak go poprawić.
Sądzę, że poważna literatura programistyczna powinna zajmować się rzeczywistym kodem, a nie ogólnikowymi wytycznymi, które przez różne osoby mogą być różnorako interpretowane.

(Wydaje mi się, że w dziedzinie "zasad używania C++" dobrym autorem jest Scott Meyers)

> 2. Czy znacie lepszy język programowania od C++? 
Pytanie sprawia wrażenie "szczenięcego".
Lepszy do czego?
Do pisania sterowników dla Linuxa? C.
Do obliczeń symbolicznych? Lisp.
Do oskryptowywania stron internetowych? JavaScript.
Do tworzenia aplikacji webowych? Na przykład F#, ClojureScript.

Jakiś czas temu chciałem skorzystać z Bluetooth na Windowsie. Okazało się, że jest to możliwe tylko z poziomu czegoś, co się nazywa Universal Windows Platform. Można na to pisać w C# albo w C++. Wybrałem C++, ale dość szybko okazało się, że to był zły wybór, bo wsparcie dla C# było zrobione lepiej, a zysku z korzystania z C++ nie było wcale.

> Lepszy ale: kompilowany, wieloplatformowy (Linux, Android, WinDos), obiektowy z wielodziedziczeniem i z sensowną biblioteką standardową? 
> Sensowna biblioteka standardowa powinna mieć obsługę: napisów, wątków, sieci i grafy. 

Praktycznie każdy poważny język daje Ci dostęp do tzw. FFI, czyli Foreign Function Interface. Czyli możesz wołać kod z dllek w każdym "dużym" języku.
Dlaczego komuś miałoby zależeć na wielodziedziczeniu, tego nie jestem w stanie pojąć.
Tutaj swego czasu widziałem dobrą krytykę:

https://www.quora.com/Is-inheritance-bad-practice-in-OOP-Many-places-that-teach-design-patterns-say-to-opt-for-composition-over-inheritance-but-what-about-when-multiple-classes-share-logic-from-an-abstract-class-such-as-in-the-Template-Method-design-pattern/answer/Curtis-Poe

Jeżeli zależy Ci na obiektowości i statycznych systemach typów, to może OCaml jest takim językiem (jeżeli chcesz uniknąć korzystania z maszyn wirtualnych), albo F#, albo Scala (jeżeli nie chcesz tego robić).

> Te 2 sprawy są dla mnie kluczowe, bo: 
> ad 1.: Jeśli tak, to postaram się rozwinąć moje myśli. Operowałem trochę skrótami w myśl zasady: "Mądrej głowie dość w dwie słowie.". 

A ja bym raczej powiedział, że nie zdefiniowałeś sobie, dla kogo ma być ten tekst przeznaczony.

> ad 2.: Jak jest taki język to może się go nauczę.

Jeżeli chcesz wydawać kategoryczne osądy o tym, że ten-a-ten język jest najlepszym językiem programowania znając tylko ten jeden język programowania, to sorry, ale Twój osąd będzie mało wiarygodny.

Jeżeli na poważnie wnikniesz w przynajmniej te główne kluczowe języki dla swoich paradygmatów (Lisp, Prolog, Smalltalk, APL/J/K, Erlang/Elixir, Forth/Joy) i będziesz przynajmniej w stanie napisać kompilator dla używanego przez siebie języka, to wtedy będziemy mogli zacząć rozmowę.

Message-ID: <9bcf9076-7065-420b-aea7-6ad8dddafef2n@googlegroups.com>
Path: polish.pugleaf.net!archive.newsdeef.eu!archive!apf9.newsdeef.eu!not-for-mail
References: <478ab743-cd00-4961-88e1-983025db304bn@googlegroups.com> <dcc43d5c-f777-4188-ab21-c2a4aca13635n@googlegroups.com>