From owner-freebsd-questions@FreeBSD.ORG Sun Dec 21 18:49:41 2014 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CE45DF5F for ; Sun, 21 Dec 2014 18:49:41 +0000 (UTC) Received: from mx01.qsc.de (mx01.qsc.de [213.148.129.14]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 631562F98 for ; Sun, 21 Dec 2014 18:49:40 +0000 (UTC) Received: from r56.edvax.de (port-92-195-93-98.dynamic.qsc.de [92.195.93.98]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx01.qsc.de (Postfix) with ESMTPS id 0EF5D3CDEC; Sun, 21 Dec 2014 19:49:37 +0100 (CET) Received: from r56.edvax.de (localhost [127.0.0.1]) by r56.edvax.de (8.14.5/8.14.5) with SMTP id sBLInbcK003644; Sun, 21 Dec 2014 19:49:37 +0100 (CET) (envelope-from freebsd@edvax.de) Date: Sun, 21 Dec 2014 19:49:37 +0100 From: Polytropon To: Mayuresh Kathe Subject: Re: posix has been rendered useless, isn't it? Message-Id: <20141221194937.aebe7233.freebsd@edvax.de> In-Reply-To: <20141221182108.GA860@aio> References: <20141221155635.GA1388@aio> <20141221175658.3d574a88.freebsd@edvax.de> <549705CE.1050108@hiwaay.net> <20141221182108.GA860@aio> Reply-To: Polytropon Organization: EDVAX X-Mailer: Sylpheed 3.1.1 (GTK+ 2.24.5; i386-portbld-freebsd8.2) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "William A. Mahaffey III" , freebsd-questions@freebsd.org X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Dec 2014 18:49:41 -0000 On Sun, 21 Dec 2014 23:51:09 +0530, Mayuresh Kathe wrote: > On Sun, Dec 21, 2014 at 11:39:26AM -0600, William A. Mahaffey III wrote: > > On 12/21/14 10:56, Polytropon wrote: > > > On Sun, 21 Dec 2014 21:26:37 +0530, Mayuresh Kathe wrote: > > >> i have been studying the unix way of doing things, > > >> i.e. tool-chaining to combine small programs for > > >> accomplishing a solution. > > > A noble goal. > > > > > > > > > > > >> but, almost none of today's servers built for any > > >> of today's unix-like systems adhere to the unix > > >> philosophy. most of them instead, are large > > >> applications. > > > The creation of monolithic applications can be a > > > problem sometimes. It's often being accellerated > > > by GUI paradigms where "one big program" is, often > > > on the basic of object oriented programming (and > > > the typical misunderstandings and misconceptions > > > of that orientation), being "required" - you simply > > > cannot easily apply the UNIX principles here. > > > > > > > Correctly applied OOP is (kinda) an extension of the UNIX philosophy > > .... Well designed/documented/implemented objects can be assembled into > > useful (compiled) programs readily & quickly. Incorrectly applied, or > > crappy objects & you have a mess .... > > > > somehow, tightly coupled 'oop' implementations, eg. c++, ada, etc. > don't feel like an extension of the unix philosophy, infact, they > give a feel of being at the opposite end, the 'vms' philosophy. > on the other hand, loosely coupled 'oop' implementations, eg. obj-c, > java, etc. are quite in tune with the unix philosophy, of having > each object doing it's job and doing it well, and communicating with > other objects by passing messages. > > in that case, would you say that tightly coupled 'oop' systems > exhibit incorrect application of 'oop'? I would not insist on attributing that to a specific OO language. As with most languages, which are tools, they can be used properly (solving a problem and reaching a goal), as well as improperly (creating a mess, bloat, incorrect programs, equivalents of spaghetti code and so on). Especially in the realm of "enterprise software", you often see all the downsides of OO crammed into one "business solution", traditionally written in Java or C#. Some OO languages seem to encourage bad programming behaviour as well as wrong design decisions which then have to be carried out by code monkeys. Luckily, you can still follow UNIX principles with well-written OO programs and wise design decisions - you just don't find them in the "enterprise world" very often. Another problem that's not just resticted to OO, but often found in programs implemented in a OO language, is the accumulation of layers of abstraction, the recursive relying on libraries. If you're not familiar with what I try to show as an example of "how not to do it", visit "The Daily WTF" and see the "Code Snippet of the Day": http://thedailywtf.com/series/code-sod There, where less brain is involved, often is where the big money is. ;-) However, I didn't want to say that OO is something bad per se. It has its places and advantages, but like all tools, there's no "one size fits all" kind of solution. In my opinion, the language for implementation does not matter so much, but the implementation itself does. Of course, Java requires a specific bytecode interpreter as an additional layer, whereas programs that compile to native machine code do not need this. The problem that the resulting machine code is machine and OS dependent can be fought with POSIX - compilation is possible on other POSIX systems. > apologies about veering off the list topic, but, i am working through > the design for a combination of compiled, loosely coupled objects using > any language, working across architectures and over heterogenous > networks. and yes, that system is a far cry from being called 'oop'. You're aiming very high - but don't understand this as a try of saying "you're doing something impossible". I whish more programmers would try to write programs and modules that can be easily combined and connected, and being _used_ on many platforms without source code alteration. > would such a system, in theory, be made to run atop the freebsd kernel > and do away with the 'posix' layer? yes, but the question is whether > it would get accepted by the community at large. POSIX isn't a layer, it's a set of specifications which is implemented in certain parts of the system, for example, the shell ("POSIX shell") or the system's standard C library ("POSIX library"). Getting rid of them would make interoperation and compatibility very complicated. A partial re-implementation of POSIX requirements is, in my opinion, worse than no imple- mentation at all, stating "this system is not POSIX- compatible" instead of claiming it is (or for the programmer, assuming it was). -- Polytropon Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ...