LINUX.ORG.RU

> Имеется религиозный нелюбитель исключений? Обоснуйте.

1. Нагляднее.

2. Контекстом предпочитаю рулить явно.

anonymous
()
Ответ на: комментарий от NikS

>> это откуда?
>C#.
А в чем сакральный смысл?
c за пределами области действия, открывающейся после using, видна?
Или это паллиатив заместо работы над анбоксингом?

AC
()

Flashdist - OpenBSD на флеше

2Евгений >Неправильно. Безударная гласная тут ни причем. "Мудоёб" - сложное слово с двумя корнями "муд" и "ёб". О - гласная для связи корней. Примеры: пароход, самолет, дисковод, долбоеб и т.д. Ну и как водится - Слака рулез

Это что же получается ?

Слова "мудрец" и "мудак" имеют одинаковый корень (муд) ?

Да, велик и загадочен русский язык !

А вот интересно, а кто такой "мудрак" ?

Sun-ch
() автор топика

>Это к Антихристу :)

--- offtopic ---

А куда делся сам Виталий? Не, ну тема действительно рулезная! Особенно меня Тангенс прикалывает. Кстати, а и он куда делся?

--- offtopic ---

NikS.

anonymous
()
Ответ на: комментарий от NikS

>Зато в С# есть повторная генерация исключений.

В си++ она тоже есть.
Невероятно, но факт :)

AC
()

> В си++ она тоже есть.

Ну все - хана Гослингу! Как там говаривал Строустрап - Sun эта единственная компания поставившая свое выживание на язык программирования. ;-)

NikS.

anonymous
()
Ответ на: Flashdist - OpenBSD на флеше от Sun-ch

>Слова "мудрец" и "мудак" имеют одинаковый корень (муд) ?

Одинаковый корень "уд".

AC
()
Ответ на: комментарий от anonymous

>Ну все - хана Гослингу! Как там говаривал Строустрап

Ладно, бог с ними большими именами.
Как человеку, не написавшему ни строчки на до-диезе, мне интереснее смысл вот этой жутко читаемой конструкции с using(выражение){}
Есть в ней смысл кроме того, чтобы облегчить жизнь компилятору и усложнить чтение программеру?

AC
()

> облегчить жизнь компилятору и усложнить чтение программеру

А чего там такого сложного и нечитаемого? Вот полный пример:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;

class MSSQLDemo 
{
   public static void Main()
   {
       using (SqlConnection c = new SqlConnection(
                "data source=DOTNET;initial catalog=db1;user id=sa") )
       {
           c.Open();
    
           SqlCommand s = new SqlCommand("SELECT * FROM t1", c);

           SqlDataReader rs = s.ExecuteReader();

           while(rs.Read())
           {
               Console.WriteLine(rs.GetInt32(0) + "\t" + rs.GetString(1));
           }
	
           rs.Close();
       }
   }
}



NikS

anonymous
()

4Ikonta_521 (*) (2003-05-15 11:32:56.847):
>>Дам маячок - чтобы удалить программу, поставленную из исходников,
>>можно >запустить в своих исходниках ./configure с параметрами, а потом
>>make uninstall. В большинстве случаев это работает.

>Это работает не в большинстве случаев, а в тех случаях, когда в
>makefile прописана цель uninstall.

Это и ежу понятно. Естественно, что это я и имел ввиду.

4Mar: это-то как раз не помойка. Это грамотная структура - бинарники в одном каталоге, переменные во втором, библиотеки в третьем. Этого в виндах и не хватает - чтобы все было стандартно и лежало на своем месте.

jackill ★★★★★
()
Ответ на: комментарий от anonymous

Замечательный код! Удивительно лаконичный, и всего-то понадобились 3 временные переменные с запоминающимися именами. А разнесение Read и GetInt32/GetString просто восхищает! А явные Open/Close заставляют с ностальгией вспомнить MFC.

P.S. Да MSOO -это что-то.

anonymous
()

Sun-ch:
В мудреце корень "мудр" скорее всего.
Утверждать точно не берусь - забыл какие суффиксы бывают. :)

jackill ★★★★★
()

Да? А вот это будет работать? 

using System;

namespace MyJoke
{

	public struct A
	{
		public int x;
	}
	
	class MyClass
	{
		static void f(out A a)
		{
			a.x = 1;
		}

		static void Main(string[] args)
		{
			A a;
			f(out a); 
			Console.WriteLine(a.x);
		}
	}
}

// Ну зачем мне еще какие-то там new и malloc ;-)))?

NikS

anonymous
()

> А куда делся сам Виталий?

fido7.ru.gnu надо читать. Пишет OCR для русского. Кто его тронет - враг российского опен-сырца.

anonymous
()

> Удивительно лаконичный

Посчитайте к-во строк и операторов для сравнения на куркуляторе:

import java.sql.*;

class MSSQLDemo 
{
   public static void main(String[] args) throws Exception
   {
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //!
       Connection c = DriverManager.getConnection 
         ("jdbc:microsoft:sqlserver://dotnet:1433;DatabaseName=db1;User=sa;"); 

       Statement s  = c.createStatement();
       ResultSet rs = s.executeQuery("SELECT * FROM t1");

       while(rs.next())
       {
           System.out.println(rs.getString(1) + "\t" + rs.getString(2));
       }
	
       rs.close();
       s.close(); //!!
       c.close(); //!!
   }
}

NikS

anonymous
()
Ответ на: комментарий от anonymous

Ну и что вы этим хотели сказать? Или это отмазка типа: "У нас все воруют..."

anonymous
()

Flashdist - OpenBSD на флеше

2NikS

Еще проще

#!/usr/bin/perl use strict; use Tie::DBI ();

tie my %db, 'Tie::DBI', { db => "vendor:$DB_NAME:$DB_HOST", table => 'table_name', key => 'key' } or die "Couldn't tie to $DB_NAME:$DB_HOST";

Работаем с %db как с хешем, все изменения заносятся в базу

untie %db;

exit 0;

Sun-ch
() автор топика
Ответ на: комментарий от anonymous

>А чего там такого сложного и нечитаемого? Вот полный пример:

Понятно.
Сложно и нечитаемо, потому что слово using перегружается слишком многими "смыслами". Оно одновременно теперь касается и области видимости, и времени жизни.
Кроме того, теперь "перегружается" и открывающая область видимости скобка.
Если уж им так хочется помочь компилятору, имхо логичней было бы модифицировать само объявление переменной. Навскидку что-то типа
{
automatic SqlConnection c = new SqlConnection(....
}
А вообще, "верной" дорогой идут товарищи.
Все идет к си++ -- при всех достоинствах:) -- перегруженному, многословному и со стандартом об полторы тыщи страниц на все случаи жизни.

AC
()
Ответ на: комментарий от jackill

знатоки русского, блин.

мурец, мудрость, мудрый - корень 'мудр'
муде, мудак, мудозвон, мудоёб - корень 'муд', в двух последних словах
имеется 2'й корень

anonymous
()

Кстати, а С++ так могет? ;-)) :

using System;

public struct A { public int x; } class MyClass { unsafe static void f(A *a) { a->x = 1101; }

unsafe static void Main(string[] args) { A a; f(&a); Console.WriteLine(a.x); } }

NikS.

anonymous
()
Ответ на: комментарий от anonymous

>Да? А вот это будет работать?
>
>using System;
>
>namespace MyJoke
>....

Вообще, было бы логично, если б работало.
А что хотелось проиллюстрировать этим примером?
Что структуры размещаютс на стеке и через это всегда инициализируются? Или что-то еще?
Вообще, я фигею.
Глубокая сакральная разница между class и struct, имевшаяся в плюсах, в до-диезе видать еще глубже и сакральнее -- теперь она касается не только правил видимости, но еще и способа размещения.
Верная дорога, гм.

AC
()

C++, Java, C# (ой, фу)

Скажите, программеры, а "mission-critical applications" тоже на этом писать бум? А ведь и будете...зато красиво....

anonymous
()

> Работаем с %db как с хешем, все изменения заносятся в базу

Sun-ch не халтурьте! Полный рабочий пример в студию!

(Завтра посмотрю где у меня завалялся полный рабочий перловый пример для DB2.)

> перегруженному, многословному и со стандартом об полторы тыщи страниц на все случаи жизни

Не такой уж и большой документ, поданый в ECMA на официальную стандартизацию.

NikS.

anonymous
()

Да, что, кстати, удобнее:

try
{
}
catch
{
}

или: 

try
{
}
catch (...)
{
}

NikS (всем спасибо за дискуссию)

anonymous
()
Ответ на: комментарий от anonymous

>Кстати, а С++ так могет? ;-)) :
C++ так могЕт с намного меньшим количеством слов
struct A {
int x;
};
struct MC {
static void f(A* VA) {VA->x = 1101};
};
int main(int argc, char* argv[])
{
A a; // здесь a.x должно быть 0
MC::f(&a);
}

А в чем проблем собственно?

AC
()
Ответ на: комментарий от anonymous

>Не такой уж и большой документ, поданый в ECMA на официальную >стандартизацию.
Все еще впереди.
В этом языке и так слишком много сущностей. У него есть все шансы стать unmanageable

AC
()

Flashdist - OpenBSD на флеше

>Sun-ch не халтурьте! Полный рабочий пример в студию!

Что с хешем не умеем работать ? Из него можно читать, в него можно

писать

tie my %db ......

Обновляем таблицу ...

$db($key_0) = {

поле_0 => $value_0, поле_1 => $value_1, . . . поле_n => $value_n };

и т.д.

untie %db; # закрываем базу и соединение

Читаем

perldoc Tie::DBI

Sun-ch
() автор топика

Где это _меньше_?

------------------------------

#include <iostream>

struct A 
{ 
    int x; 
}; 

struct MC 
{
     static void f(A* VA) 
     {
        VA->x = 1101;
     }
};
 
int main(int argc, char* argv[]) 
{ 
      A a;
      MC::f(&a);
      std::cout << a.x << std::endl; 
} 

--------------------------------------------

VS.

--------------------------------------------

public struct A
{
	public int x;
}
	
class MyClass
{
	unsafe static void f(A *a)
	{
		a->x = 1101;
	}

	unsafe static void Main()
	{
                A a;
 	        f(&a); 
		System.Console.WriteLine(a.x);
	}
}

----------------------------------------------

(Грамматику я в Вашем примере слегка подправил)

NikS.



anonymous
()

>Что с хешем не умеем работать ?

Саныч, Вы мне реальный примерчик для моих DB2 или PostgreSQL - "съел и порядок"! Ну есть у меня лама-бук, но не пишу я на Перле, начальство не требует.

NikS.

anonymous
()
Ответ на: комментарий от anonymous

>Где это _меньше_?

Нет никаких "лишних" слов типа unsafe :)
Нет "лишних" слов public
Я так и не врубился, почему для struct нельзя было оставить правила доступа из cи++

>(Грамматику я в Вашем примере слегка подправил)

Точнее, расставили переносы строк и включили iostream Последнее для грамматики не обязательно :)

Кстати, я так и не понял, а что вы хотели своим примером сказать?
Что c# умеет размещать структуры на стэке?
Это не новость...

AC
()

>В этом языке и так слишком много сущностей. У него есть все шансы стать unmanageable

Сколько сущностей содержит COBOL? Около 700 ключеых слов. И это не мешает ему до сих пор быть языком Number One.

О структурах. "Раз структурная переменная не является ссылкой, она не создает другого объекта, отдельно уничтожаемого в процессе уборки мусора. ..."

NikS.

anonymous
()

Никсу:
не передёргивай, да?? Я же ваши посты не перевираю, а вы скопом мои перевираете, ну и кто тут с флагом??
Прочитай ещё раз ту тему - я интересовался тем, какой язык перспективнее в плане развития (дабы обучаться), где и высказал сомнения по поводу С++, так как слышал много нехорошого о нём от тех, кто сейчас на нём программит. Там ещё такой флейм был на эту тему,и победили, между прочим, противники С++.
Поэтому, если ты разуешь глаза, то поймёшь, что спецом в языках я себя никогда не выставлял, иначе не стал бы спрашивать такое.

Да, кстати, нефиг спрашивать где Рут с Антиком. По моим подсчётам стрелка должна состоятся именно сегодня :) :(
Поэтому их на форуме не ждите, а лучше смотрите по ТВ московские криминальные новости :):)

Tangeizer
()

So what? Можно и в управляемом коде:

struct A { public int x; } class MyClass { static void f(out A a) { a.x = 1401; }

static void Main() { A a; f(out a); System.Console.WriteLine(a.x); } }

Меньше ошибок.

NikS.

anonymous
()

> победили, между прочим, противники С++.

Что значит "победили"? Есть класс задач, где важна производительность (C++), а есть класс задач, где важна надежность кода (C#). zOS вообще на ассемблере создан, но это не значит, что для него нет компилятора C++ или Java.

Вы бы хоть книгу "Символьный С++" почитали, что ли бы... ;-(

NikS.

anonymous
()

Вот эту книжечку (издавалась и у нас в России).

http://www.amazon.com/exec/obidos/tg/detail/-/1852332603/ref=lib_dp_TFCV/103-...

А, кстати, может быть Вы дискретную математику хорошо знаете? Объясните нам популярно в чем сущность теоремы Гельмгольца-Ли (Helmgoltz-S.Lie).

NikS.

anonymous
()

Flashdist - OpenBSD на флеше

>Саныч, Вы мне реальный примерчик для моих DB2 или PostgreSQL - "съел и порядок"! Ну есть у меня лама-бук, но не пишу я на Перле, начальство не требует

Ну вот простенький примерчик

есть табличка x (id, x, y, z), пусть лежит она на DB2 в базе base

на хосте host

нужно вывести записи с 1000 <= id <= 2000 на stdout

#!/usr/bin/perl use strict; use Tie::DBI (); tie my %db, 'Tie::DBI', { db => "DB2:'base':'host':'user':'password'", table => 'x', key => 'id' } or die "Error ..."; for(1000..2000) print $db($_){'x'},$db($_){'y'},$db($_){'z'},"\n"; untie %db; exit 0;

Sun-ch
() автор топика
Ответ на: комментарий от anonymous

>Около 700 ключеых слов. И это не мешает ему до сих пор быть языком Number One.
Просто так исторически сложилось.
То что есть примеры "успешных" монструозных языков, не значит, что нужно их и дальше клепать.
Главный принцип -- KISS

>Раз структурная переменная не является ссылкой, она не создает другого объекта, отдельно уничтожаемого в процессе уборки мусора. ...

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

Еще раз -- я так и не понял глубинного смысла вашего примера. Обоснуйте.

AC
()
Ответ на: комментарий от anonymous

>> победили, между прочим, противники С++.
>Что значит "победили"?

Не доставай, иди и читай ту тему. там на конкретных примерах С++шников размазали.
читать твои книги не собираюсь, так как в том треде мне достаточно ясно ответили что С++ маздайный язык, посему не собираюсь такой сранью себе мозги забивать.
Зы:Могу показать кое кого, на чьи мозги С++ плохо подействовал:) да, ты угадал, это ты:) У тя с логикой совсем уж явно плохо, что вызывает у меня ещё большее отвращение к этому языку.

Tangeizer
()
Ответ на: Flashdist - OpenBSD на флеше от Sun-ch

1000..2000 - сильно! Впрочем при нынешнем отношении к эффективности сойдет.

anonymous
()
Ответ на: комментарий от anonymous

>>Меньше ошибок.

Ааа! Ваш пример был к слову out, что ли?
Так бы сразу и сказали.

AC
()
Ответ на: комментарий от Tangeizer

>ак как слышал много нехорошого о нём от тех, кто сейчас на нём программит

Слышал звон, а не знает где он.

AC
()

> Еще раз -- я так и не понял глубинного смысла вашего примера. Обоснуйте.

Удобство формы записи, даже при использовании неконтролируеиого кода. Взаимодействие с кодом, написанным на тех же КОБОЛе или ФОРТРАНе. Или том же forthcoming фукциональном F#. Я тут не спорю - я обсуждаю.

К сожалению код на С++ аналогичный С# конструкции

using (MyClass my = new MyClass(...)){...}

аналога пока я не получил для дальнейшего обсуждения и сравнительного анализа.

NikS.

anonymous
()
Ответ на: комментарий от Tangeizer

>читать твои книги не собираюсь, так как в том треде мне достаточно ясно >ответили что С++ маздайный язык, посему не собираюсь такой сранью себе >мозги забивать.

Книжек он не собирается читать, потому что ему "сказали". Мляяя.
А у тебя мозгОв-то хватит эту книжку осилить?
На форуме ему "сказали", что С++ -- маздай.
Сам ты причем, наверняка не написал на нем ни строчки.
Дедушка с папой-начальником-транспортного-цеха "сказали", как круты оборонщики и какие лохи "ученые". Не тем занимаются, Николя Тесла мля не чтут. И должны были пулю для винтовки отлить, чтобы тигер пробивала.
"Сказали".
А у самого-то у тебя голова на плечах есть?
Ламерье поганое -- ни ХРЕНА ведь не знаешь, а с понтом и пафосом лезешь нести безграмотный бред. И еще -- с ПОЗИЦИЕЙ.
Мля, самый ужасный вид ограниченности. Ограниченность НАМЕРЕННАЯ, осознанная. Как таких кретинов как ты земля носит?
Твое место -- в стойле. С шорами.

AC
()
Ответ на: комментарий от anonymous

>К сожалению код на С++ аналогичный С# конструкции
using (MyClass my = new MyClass(...)){...}

А что тут аналоги писать?
//здесь код
{ //начинается область видимости
MyClass my;
} //область действия закончена, my убит

или
//здесь код
{ // начинается область видимости
auto_ptr<MyClass> my = ....
}

Совершенно стандартные всем известные вещи.
Есть конечно нюансы.
А этот ваш using -- паллиатив, чтобы иметь эффективность и не усложнять компилятор.

AC
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.