Илья ([info]i1ey) wrote,
@ 2009-04-16 10:32:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:мысли, программирование

Почему мне не нравится C++
Из всех языков программирования я выделяю для себя две группы: действительно низкоуровневые языки - разного рода ассемблеры, С, С--, Паскаль и действительно высокоуровневые - Lisp, Haskell, Smalltalk, Ruby и т.д.

Когда хороший программист пишет на низкоуровневом языке, он понимает, как работает компилятор, какие машинные инструкции выполняются при работе его программы. Можно сказать, что он знает язык своего компьютера.

Когда хороший программист пишет на высокоуровневом языке, он имеет дело не непосредственно с компьютером, с некоторой виртуальной машиной - интерпретатором, он может не знать, как устроена эта машина (так же как программист на языке низкого уровня может не знать, как устроены транзисторы, из которых состоит его компьютер), но он знает язык этой машины. Он хорошо знает относительно небольшой набор однозначных правил, по которым записывается программа для этой машины.

В обоих случаях программист хорошо знает машину (виртуальную или аппаратную), с которой ему приходится работать, он полностью понимает значение всех языковых конструкций.

Но язык С++ нельзя отнести ни к первой ни ко второй группе. Он сложен настолько, что обычный программист не может полностью понять, как работает компилятор С++. Но, в то же время, С++ не является достаточно высокоуровневым языком, чтобы можно было полностью абстрагироваться от устройства компилятора и компьютера. Поэтому, когда используешь С++, сложно поддерживать полную ясность того, как на самом деле работает твоя программа. С++ сочетает в себе черты как высокоуровневых языков, так и низкоуровневых. И именно это сочетание является источником как преимуществ языка С++, так и его недостатков.




(12 comments) - (Post a new comment)


[info]xsbos
2009-04-16 09:59 am UTC (link)
Просто C++ язык не для слабонервных. Но по-моему только на плюсах можно писать достаточно высокоуровнево, при желании реализовывая под себя все уровни ниже

(Reply to this) (Thread)


[info]i1ey
2009-04-16 12:42 pm UTC (link)
То же самое можно делать, используя несколько языков. Грубо говоря, можно писать на Ruby, обращаясь к библиотекам, написанным на С.

(Reply to this) (Parent)(Thread)


[info]xsbos
2009-04-16 02:20 pm UTC (link)
Ну, это понятно, но кайф потеряется

(Reply to this) (Parent)


[info]georg_the_great
2009-04-16 12:32 pm UTC (link)
А вот я согласен с автором. Плюсы и правда какая-то странная вещь. Меня раздражает, когда происходит то, что я не просил делать (как-то я передал структуру-список по значению – проеб пару на дебаг).

(Reply to this) (Thread)


[info]xsbos
2009-04-16 02:22 pm UTC (link)
Ололо, по-хорошему просто нужно перед тем, как писать что-либо, разобраться, а что из этого получится, по стандарту или еще как-то.

(Reply to this) (Parent)(Thread)


[info]georg_the_great
2009-04-16 02:35 pm UTC (link)
Буээ. Почему одинаковый код работает на С и С++ (являющегося, не забываем, расширением С) по-разному?

(Reply to this) (Parent)(Thread)


[info]xsbos
2009-04-16 02:46 pm UTC (link)
> являющегося, не забываем, расширением С
В этом и ошибка. C++ это не расширение C

(Reply to this) (Parent)(Thread)


[info]i1ey
2009-04-16 03:17 pm UTC (link)
Совершенно верно. Не всякая программа на С является программой на С++. И (очевидно) наоборот.

(Reply to this) (Parent)


[info]i1ey
2009-04-16 03:16 pm UTC (link)
Пример в студию.

(Reply to this) (Parent)(Thread)


[info]georg_the_great
2009-04-16 05:38 pm UTC (link)
Выше было. Про список.

(Reply to this) (Parent)(Thread)


[info]i1ey
2009-04-17 04:22 am UTC (link)
Я выше не видел ни одной строчки кода, которая бы работала по разному в С и в С++.

(Reply to this) (Parent)


[info]bbubberedoxf
2009-07-27 03:07 am UTC (link)
Не понимаю как такое может быть - именно на вашем блоге через раз антивирусник ругается, на остальных блогах жж нормально :(

(Reply to this)


(12 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…